具有特定条件的电子邮件的正则表达式验证
Posted
技术标签:
【中文标题】具有特定条件的电子邮件的正则表达式验证【英文标题】:Regex validation for email with specific condition 【发布时间】:2021-11-22 00:15:02 【问题描述】:目前我正在使用以下代码来验证电子邮件
public static bool IsValidEmail(string email)
var r = new Regex(@"^([0-9a-zA-Z]([-\.\'\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]2,9)$");
return !string.IsNullOrEmpty(email) && r.IsMatch(email);
现在要验证此“abc@a.bb.com”电子邮件是否为有效电子邮件 ID。正则表达式需要做哪些改变?
【问题讨论】:
不使用正则表达式?即使emailregex.com 有时也是错误的。你可以改用docs.microsoft.com/en-us/dotnet/api/…。 @jeremy 感谢您的回复,我希望在我的正则表达式中进行必要的更改/编辑以接受“abc@a.bb.com”([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+
仅匹配以字母数字开头和结尾的子域,因此必须包含 2 个字符。但我仍然不会尝试“修复”正则表达式,因为正则表达式永远会 100% 正确。不要试图用锤子做任何事情,使用正确的工具。如果您想检查电子邮件是否有效,请尝试发送验证码。
【参考方案1】:
使用此正则表达式并不是验证电子邮件的最佳方式。
但是,将您的正则表达式更正为您要求的模式,它将是这样的:
var r = new Regex(@"^([0-9a-zA-Z]([-\.\'\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z\.])+[.a-zA-Z]2,9)$");
仍然坚持正则表达式,你可以在:https://www.ex-parrot.com/pdw/Mail-RFC822-Address.html中找到更完整的模式
我鼓励您按照@Jeremy Lakeman 的建议使用 Microsoft 文档作为电子邮件地址 -> https://docs.microsoft.com/en-us/dotnet/api/system.net.mail.mailaddress.trycreate?view=net-5.0
【讨论】:
以上是关于具有特定条件的电子邮件的正则表达式验证的主要内容,如果未能解决你的问题,请参考以下文章