3

我正在一个网站上工作,在那里我编写了以下正则表达式来验证电子邮件 ID,并在正则表达式验证器中使用了该正则表达式。正则表达式是

\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

它像我预期的那样接受有效的电子邮件 ID。但是当我的 QA 进行负面输入测试时,ak@gmail.com.com.com.com它允许并说电子邮件 ID 是有效的。我到处搜索,几乎在各个方面都尝试过解决这个问题。任何人都可以帮我限制像上面这样的邮件ID。实际上,ak@gmail.co.in可以接受类似的电子邮件ID,但是当最后一个字符串.重复时出现问题。请帮忙。我正在使用点网 2005。

4

3 回答 3

1

RFC822中指定的有效电子邮件格式非常复杂,正则表达式可能不是解析和验证它们的最佳工具。如果您仍然想使用正则表达式,您应该考虑检查Validate email address in Javascript 的答案?在 c# 中使用正则表达式解析电子邮件

TL; DR:不要使用正则表达式来验证电子邮件地址。而是使用真正的 RFC822 解析器,并检查域中是否存在 DNS MX 记录,并可能尝试使用可用于验证电子邮件已收到且用户拥有该地址的链接向该地址发送电子邮件.

于 2012-12-20T12:38:10.753 回答
1

ak@gmail.com.com.com.com在语法上是正确的。但是,没有 MX 记录gmail.com.com.com.com,这使其无法访问,但并非无效。

如果您想检查这一点,您应该首先检查语法(使用您拥有的正则表达式),然后查找主机名的 MX 记录。

我还想指出,您使用的正则表达式非常糟糕,并且会使许多有效的邮件地址无效。

于 2012-12-20T12:39:19.643 回答
-2

添加以下表达式以检查电子邮件

 ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"  
于 2012-12-20T12:38:50.373 回答