2012-07-26 125 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