2012-07-26 94 views
0
电子邮件地址

我写这个正则表达式功能验证使用正则表达式

Public Function ValidateEmailAddress(ByVal txtEmailAddress As String) As Boolean 

    Dim pattern As String 
    pattern = "^[a-z0-9_\\+-]+(\\.[a-z0-9_\\+-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*\\.([a-z]{2,4})$" 
    If Regex.IsMatch(txtEmailAddress, pattern) Then 
     Return True 
    Else 
     Return False 
    End If 

End Function 

而上,调用函数的子过程中:

If ValidateEmailAddress(txtEmailAddress.Text) = True Then 
    Else 
     MessageBox.Show("Email Not Valid") 
    End If 
    Sub Procedure 

当我输入电子邮件,正确或不正确我得到同样的消息,即电子邮件无效,除了在if语句之后逐句通过代码时,它忽略返回true。请任何人都可以发现问题在这里?

+0

几天前我为这个问题得到的答案没有工作,因此不应该被接受的权利。 – Jide 2012-07-26 11:40:37

+0

但是你有15个问题你问了,只有其中两个已被标记为接受答案。您需要查看给出的答案并将其标记为合适的 - 如果您发现了自己的解决方案,并将自己的答案标记为已接受。 – 2012-07-26 11:42:30

+0

我认为你的'ValidateEmailAddress'方法应该只读'Return txtEmailAddress.Contains(“@”)'... – sloth 2012-07-26 11:45:47

回答

2

作为替代BigYellowCactus的回答: - 您可以使用这样的事情 - 我认为这是最好使用正则表达式:

Public Shared Function IsValidEmailAddress(ByVal emailAddress As String) As Boolean 
    Try 
     Dim address As New MailAddress(emailAddress) 
     Return True 
    Catch ex As Exception 
     Return False 
    End Try 
End Function 

这将返回False@abc.com[email protected]而只是检查@将返回True

+0

一个指针可能是模块中的方法不能被声明为Shared。什么是使用正则表达式的时候,你可以写一个简单的功能就像这样。非常感谢它完美的作品! – Jide 2012-07-26 13:44:18

+0

+1这个解决方案。但它仍然没有解决主要问题,并且根据RFC 5322标准也不能正确工作。举例来说,这段代码未能拒绝完全无效的电子邮件地址'this_is_invalid .... @ example.com'。 – sloth 2012-07-26 13:50:58

+0

@BigYellowCactus - 同意,这将不会执行与正则表达式相同的检查,但优先于正则表达式代码IMO页面。 – 2012-07-26 13:56:11