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

Mar*_*ino 7 javascript regex validation email-validation

我知道这里有很多关于电子邮件验证和特定RegEx的问题.我想知道验证电子邮件的最佳做法是什么username+anythingelse@gmail.com(详见此处).我当前的RegExp for JavaScript验证如下,但它不支持+句柄中的额外内容:

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

有没有其他服务支持额外的+?我应该+在地址中允许a 或者我是否应该更改RegEx以仅允许其发送带有gmail.comgooglemail.com作为域的电子邮件?如果是这样,会有什么改变的RegEx?

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

Ben*_*n S 11

+是电子邮件地址中的有效字符.域名不是gmail.com或googlemail.com并不重要

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

/^([a-zA-Z0-9_.-\+])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/
Run Code Online (Sandbox Code Playgroud)

作为此正则表达式如何不对规范进行验证的示例:电子邮件..@-.com根据它有效.

  • 我走的远远超过"不是一个非常好的方式":在数学上不可能*用正则表达式验证(所有可能的)电子邮件地址.定义电子邮件地址格式的语法是Type 2 Chomsky Grammar,正则表达式只能处理Type 3 Chomsky Grammars:http://en.wikipedia.org/wiki/Chomsky_grammar#The_hierarchy (4认同)

Aar*_*lla 5

如果您需要通过regexp验证电子邮件,请阅读标准或至少阅读本文.

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

(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\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-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
Run Code Online (Sandbox Code Playgroud)

如果那不吓到你,那应该:)