C#中用于电子邮件validation的最佳正则expression式

我已经看到了大量用于不同编程语言的正则expression式,这些语言都旨在validation电子邮件地址。 我看过很多评论,说这些expression式在某些情况下不起作用,而且要么太严格,要么过于宽容。 我正在寻找的是一个正则expression式,我可以在我的C#代码中使用,这是明确的。

我发现的最好的事情是这个

^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$ 

有什么更好的吗?

电子邮件地址:RFC 2822格式
匹配一个正常的电子邮件地址。 不检查顶级域名。
要求“不区分大小写”选项为ON。

 [a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])? 

用法:

 bool isEmail = Regex.IsMatch(emailString, @"\A(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)\Z", RegexOptions.IgnoreCase); 

第一个select(坏因为抛出,但MS会为你工作):

 bool IsValidEmail(string email) { try { var mail = new System.Net.Mail.MailAddress(email); return true; } catch { return false; } } 

第二个选项是阅读我知道如何validation电子邮件地址,直到我读了RFC和RFC规范

此C#函数使用正则expression式来评估传递的电子邮件地址是否在语法上有效。

 public static bool isValidEmail(string inputEmail) { string strRegex = @"^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}" + @"\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\" + @".)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"; Regex re = new Regex(strRegex); if (re.IsMatch(inputEmail)) return (true); else return (false); }