我知道这里有很多关于电子邮件验证的问题,特定的RegEx 's. I'd想知道有关 username+anythingelse@gmail.com
技巧(details here)验证电子邮件的最佳做法 . 我当前的RegExp for JavaScript验证如下,但它不支持句柄中的额外 +
:
/^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/
有没有其他服务支持额外的 +
?我应该在地址中允许 +
,还是应该更改RegEx以仅允许其使用 gmail.com
或 googlemail.com
作为域的电子邮件?如果是这样,会有什么改变的RegEx?
UPDATE: 感谢大家指出 +
符合规范有效 . 我没有't know that and now do for the future. For those of you saying that its bad to even use a RegEx to validate it, my reason is completely based on a creative design I'建设 . 我们的客户的设计在电子邮件地址输入旁边放置绿色支票或红色X以模糊它 . 该图标表示它是否是一个有效的电子邮件地址,所以我必须使用一些JS来验证它 .
5 回答
+
是电子邮件地址中的valid character . 它没有_gmail.com或googlemail.com正则表达式实际上并不是验证电子邮件的好方法,但如果您只想修改正则表达式以处理加号,请将其更改为以下内容:
作为此正则表达式如何不对规范进行验证的示例:电子邮件
..@-.com
根据它有效 .如果您需要通过regexp验证电子邮件,那么read the standard或至少this article .
该标准建议使用此正则表达式:
如果那不吓到你,那应该:)
我倾向于采用/的方式 . @ . \ .. /检查简单的错误 . 然后我会发送一封电子邮件到该地址,以验证它确实存在,因为大多数拼写错误仍然会产生语法上有效的电子邮件地址 .
这些规格允许一些非常疯狂的丑陋电子邮件地址 . 我经常对网站感到非常恼火甚至抱怨完全正常,有效的电子邮件地址,所以请尽量不要拒绝有效的电子邮件地址 . 接受一些非法地址比拒绝合法地址更好 .
像其他人建议的那样,我会使用像/这样的简单正则表达式 . @ . /然后发送验证邮件 . 如果验证非常重要,那么验证是非常重要的,因为合法的电子邮件地址仍然可以属于访客以外的其他人 . 或者包含一个意外但致命的拼写错误 .
*编辑:从正则表达式的域部分删除点,因为
a@to
仍然是有效的电子邮件地址 . 所以即使我的超简化验证也拒绝了有效地址 . 是否有任何缺点只是接受包含@的东西在前面和后面的东西?一篇关于这个主题的非常好的文章I Knew How To Validate An Email Address Until I Read The RFC