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); }
- 如何在Python中validationIP地址?
- AngularJS:与服务器端validation集成
- 更好的方法来检查variables为空或空string?
- 如何validation一个方法被调用两次mockito verify()
- 是否可以添加到Visual Studio的HTML5validation?
- 在FormsAuthentication.SignOut()之后,Page.User.Identity.IsAuthenticated仍然为true。
- PHP正则expression式进行强密码validation
- 为什么false使validates_presence_of失效?
- 如何在Web API 2中存储服务器端的持票人代币?