【问题标题】:Regex for Email Address validation用于电子邮件地址验证的正则表达式
【发布时间】:2017-01-12 04:18:04
【问题描述】:
我正在尝试验证电子邮件地址。目前我正在使用以下正则表达式来验证工作正常的电子邮件地址。但我现在想修改它,只允许min 2 和max 40 个字符用于电子邮件地址的域部分,即@ 符号之后。我尝试设置范围,但我想它不会像这样工作。我哪里错了?
正则表达式:
^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})$
【问题讨论】:
标签:
c#
regex
email-validation
【解决方案1】:
验证电子邮件地址并非易事,您的正则表达式会拒绝完美的电子邮件地址,例如test+1234@localhost。如果您需要自己做,请查看RFC 822 §6。
但是,在 C# 中,有一个类 MailAddress,其构造函数接受字符串参数。你可以尝试构造一个MailAddress addr = new MailAddress(emailString),看看它是否会抛出一个FormatException。作为一个好处,MailAddress 对象有许多有用的方法来处理电子邮件地址。
编辑:我很抱歉,我错过了您试图限制主机长度。如果你像上面那样创建MailAddress,那么addr.Host 将包含主机名部分,你可以检查它的长度。