我正在一个网站上工作,我写了以下正则表达式来验证电子邮件ID并在正则表达式验证器中使用正则表达式。正则表达式是
\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
它接受了我预期的有效电子邮件ID。但是,当我的质量保证进行负面输入测试时,如ak@gmail.com.com.com.com
,那么它允许并说电子邮件ID有效。我已经搜遍了所有地方,并且几乎尝试了所有方面来解决这个问题。任何人都可以帮我限制上面的邮件ID。实际上,可以接受ak@gmail.co.in
之类的电子邮件ID,但是.
之后的最后一个字符串会重复出现问题。请帮忙。我正在使用dot net 2005。
答案 0 :(得分:1)
RFC822中指定的有效电子邮件格式非常复杂,正则表达式可能不是the best tool来解析和验证它们。如果您仍想使用正则表达式,则应考虑检查Validate email address in Javascript?或parse email with regex in c#的答案。
TL; DR:不要使用正则表达式来验证电子邮件地址。而是使用真正的RFC822解析器,并检查域是否存在DNS MX记录,并尝试向该地址发送电子邮件,其中包含可用于验证已收到电子邮件且用户拥有该地址的链接
答案 1 :(得分:1)
ak@gmail.com.com.com.com
在语法上是正确的。但是,gmail.com.com.com.com
没有MX记录,这使得它无法访问,但无效。
如果要检查这一点,首先应检查语法(使用该正则表达式),然后查找主机名的MX记录。
我还想指出你正在使用的正则表达式确实错误,并且会使许多有效的邮件地址无效。
答案 2 :(得分:-2)
添加以下表达式以查看电子邮件
ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"