我知道这里有很多关于电子邮件验证和特定RegEx的问题。我想知道有关使用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?
更新
感谢大家指出+
符合规范。我不知道,现在为未来做。对于那些说甚至使用RegEx来验证它的人来说,我的理由完全基于我正在构建的创意设计。我们的客户的设计在电子邮件地址输入旁边放置绿色支票或红色X,以模糊它。该图标表示它是否是一个有效的电子邮件地址,因此我必须使用一些JS来验证它。
答案 0 :(得分:11)
+
是电子邮件地址中的valid character。域名不是gmail.com或googlemail.com
正则表达式实际上并不是验证电子邮件的好方法,但如果您只想修改正则表达式来处理加号,请将其更改为以下内容:
/^([a-zA-Z0-9_.-\+])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/
作为此正则表达式未针对规范进行验证的示例:电子邮件..@-.com
根据它有效。
答案 1 :(得分:5)
如果您需要通过regexp验证电子邮件,请read the standard或至少this article。
该标准建议使用此正则表达式:
(?:[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])+)\])
如果这不会吓到你,它应该:)
答案 2 :(得分:3)
我倾向于选择/.+@.+\..+/之类的东西来检查简单的错误。然后我会发送一封电子邮件到该地址,以验证它确实存在,因为大多数拼写错误仍然会产生语法上有效的电子邮件地址。
答案 3 :(得分:2)
规格允许一些非常疯狂的丑陋电子邮件地址。我经常对网站感到非常恼火甚至抱怨完全正常,有效的电子邮件地址,所以请尽量不要拒绝有效的电子邮件地址。接受一些非法地址比拒绝合法地址更好。
正如其他人所建议的,我会使用像/.+@.+/这样的简单正则表达式然后发送验证邮件。如果验证非常重要,那么验证是非常重要的,因为合法的电子邮件地址仍然可以属于访客以外的其他人。或者包含一个意想不到但致命的错字。
*编辑:从正则表达式的域部分删除了点,因为a@to
仍然是有效的电子邮件地址。所以即使我的超简化验证也拒绝了有效地址。是否有任何缺点只是接受包含@的东西在前面和后面的东西?
答案 4 :(得分:1)