2011-03-21 48 views
2

我輸入驗證在asp.net頁面,但問題是,它驗證的電子郵件一樣hasangü[email protected]şşıı.comInternet電子郵件驗證表達式驗證一切

我的代碼是:

if (Regex.IsMatch(email, @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*")) 
{ valid } 
else { invalid } 

編輯: 我寫了一個question前特別以驗證電子郵件地址,包括土耳其人物,但現在我不希望用戶能夠與土耳其的字符輸入郵件,因爲用戶大多是由錯誤型號的土耳其字符,我無法發送郵件到這些地址。

+0

爲什麼這是一個問題? – sth 2011-03-21 20:58:09

+0

它應驗證該地址。這是完全合法的。 – 2011-03-21 20:59:23

+0

但它沒有驗證過。奇怪的是,它現在驗證。 – 2011-03-24 12:41:40

回答

4

你爲什麼不只是使用內置的System.Net.Mail.MailAddress類電子郵件驗證?

bool isValidEmail = false; 
try 
{ 
    var email = new MailAddress("hasangü[email protected]şşıı.com"); 
    isValidEmail = true; 
{ 
catch (FormatException x) 
{ 
    // gets "An invalid character was found in the mail header: '.'." 
} 
3

RFC3692詳細介紹瞭如何正確驗證電子郵件地址,它目前只能正確處理ASCII字符。但是,這是由於變化,因此您的驗證應儘可能放鬆。

我可能會使用這樣的表達式:

[email protected]+ 

這將確保你不會轉彎的人了,因爲你的正則表達式讓他們別無選擇。

如果電子郵件很重要,您應該通過發送電子郵件到提供的包含鏈接的地址來進行驗證。