我用这个
@"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"
正则表达式来验证电子邮件
([\w\.\-]+)
- 这是一级域名(许多字母和数字,还有点和连字符)
([\w\-]+)
- 这是二级域名
((\.(\w){2,3})+)
- 这适用于其他级别域(从 3 到无穷大),其中包括一个点和 2 或 3 个文字
这个正则表达式有什么问题?
编辑:它不匹配“[电子邮件受保护] /cdn-cgi/l/email-protection" email
顶级域名就像.museum http://en.wikipedia.org/wiki/.museum不以这种方式匹配,还有一些其他长 TLD。此外,您还可以使用以下方法验证电子邮件地址邮件地址类 http://msdn.microsoft.com/en-us/library/system.net.mail.mailaddress.aspx正如微软所解释的here http://msdn.microsoft.com/en-us/library/01escwtf.aspx在注释中:
不使用正则表达式来验证电子邮件地址,
您可以使用 System.Net.Mail.MailAddress 类。确定
电子邮件地址是否有效,请将电子邮件地址传递给
MailAddress.MailAddress(String) 类构造函数。
public bool IsValid(string emailaddress)
{
try
{
MailAddress m = new MailAddress(emailaddress);
return true;
}
catch (FormatException)
{
return false;
}
}
这会为您省去很多麻烦,因为您不必编写(或尝试理解别人的)正则表达式。
EDIT: 对于那些过敏的人试着抓:在.NET 5中你可以使用MailAddress.TryCreate
。也可以看看https://stackoverflow.com/a/68198658 https://stackoverflow.com/a/68198658,包括如何修复 ..、空格、缺失 .TLD 等的示例。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)