电子邮件地址验证的最佳做法(包括Gmail中的地址)

我知道这里有很多关于电子邮件验证和特定RegEx的问题。 我想知道什么是验证电子邮件的最佳做法是否有关于使用username+anythingelse@gmail.com技巧(详情在此处)。 我目前用于JavaScript验证的RegExp如下,但它不支持句柄中的额外+

/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/

有没有其他服务支持额外的+ ? 我应该允许在地址中加一个+还是应该将RegEx更改为仅允许将gmail.comgooglemail.com作为域的电子邮件? 如果是这样,RegEx会改变什么?

更新:感谢大家指出+符合规范。 我不知道这一点,现在做未来。 对于那些说甚至使用RegEx来验证它的人来说,我的理由完全基于我正在创建的创意设计。 我们客户的设计在模糊的电子邮件地址输入旁边放置了绿色的支票或红色的X. 该图标表示它是否是有效的电子邮件地址,因此我必须使用一些JS来验证它。


+是电子邮件地址中的有效字符。 不要紧,如果该域名不是gmail.com或googlemail.com

正则表达式实际上并不是验证电子邮件的好方法,但如果您只是想修改正则表达式来处理加号,请将其更改为以下内容:

/^([a-zA-Z0-9_.-+])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/

作为这个正则表达式如何不符合规范的例子:电子邮件..@-.com根据它是有效的。


如果您需要通过正则表达式验证电子邮件,请阅读标准或至少阅读本文。

该标准建议使用此正则表达式:

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[x01-x08x0bx0cx0e-x1fx21x23-x5bx5d-x7f]|[x01-x09x0bx0cx0e-x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[x01-x08x0bx0cx0e-x1fx21-x5ax53-x7f]|[x01-x09x0bx0cx0e-x7f])+)])

如果这不会吓到你,它应该:)


我会倾向于按照/.+@.+..+/的方式去检查简单的错误。 然后,我会发送一封电子邮件到地址,以确认它确实存在,因为大多数拼写错误仍然会导致语法上有效的电子邮件地址。

链接地址: http://www.djcxy.com/p/92599.html

上一篇: Best practices for email address validation (including the + in gmail addresses)

下一篇: Check whether a string matches a regex in JS