2011-09-02 63 views
3

我想知道是否有人發現一個解決方案,驗證包含unicode域中的unicode字符的電子郵件?我已經搜索了很長時間,還沒有找到可行的解決方案。電子郵件正則表達式,包括unicode域

+0

相關http://stackoverflow.com/questions/1698855/how-are-the-new-unicode-domains-going-to-be-handled-by-email-regexes – Damith

回答

3

我有同樣的問題,想出了一個智能解決方案\p{L}。 請檢查出來:

private static bool IsEmailValid(string email) { 
    System.Text.RegularExpressions.Regex re = new Regex(@"^[\p{L}0-9!$'*+\-_]+(\.[\p{L}0-9!$'*+\-_]+)*@[\p{L}0-9]+(\.[\p{L}0-9]+)*(\.[\p{L}]{2,})$", RegexOptions.CultureInvariant | RegexOptions.IgnoreCase); 

    return re.IsMatch(email); 
} 
0

好吧,所以我發現的唯一的電子郵件驗證確實很棒(而不僅僅是OK)是Zend Framework的一部分。當然,這意味着PHP,儘管如此,你可以看看他們是如何做到的,並模仿他們的一些更好的想法:http://pastebin.com/SvZPBp31或者只是查找Zend_Validate_EmailAddress源代碼。

抱歉,這不是C#語法/語言。

4

通過正則表達式完全驗證電子郵件地址是。真的很難。 This is one that is fully compliant with RFC822。即使你創建了一個完美正則表達式更正驗證所有電子郵件地址,這並不阻止我進入[email protected](如果你想確保我輸入一個有效的電子郵件地址)或從不小心拼錯了我的用戶名(如果你想確保我輸入正確的電子郵件地址)。

只需在電子郵件中發送一個鏈接,說:「點擊此處驗證您的電子郵件地址。」

0

正如已經指出的,通過正則表達式驗證電子郵件地址是一個難題。你可以靠近一個相當簡單的,但有很多很多情況下它會失敗。我是所有發送電子郵件到一個假定的電子郵件地址作爲@Nick ODell建議(在做一些基本完整性檢查,它是否包含@符號,是否存在域名部分,並有一個或多個MX/A/AAAA RR等)幷包括驗證鏈接。

也就是說,如果通過Unicode domain你的意思是使用Punycode編碼的主機名稱的標籤,這些應該由任何中途能力驗證的正則表達式覆蓋,如編碼形式那些只是xn--其次是定時定[a-z0-9-](不區分大小寫比較)。

相關問題