首页 文章

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

提问于
浏览
7

我知道这里有很多关于电子邮件验证的问题,特定的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.comgooglemail.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 回答

  • 3

    + 是电子邮件地址中的valid character . 它没有_gmail.com或googlemail.com

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

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

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

  • 2

    如果您需要通过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])+)\])
    

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

  • 5

    我倾向于采用/的方式 . @ . \ .. /检查简单的错误 . 然后我会发送一封电子邮件到该地址,以验证它确实存在,因为大多数拼写错误仍然会产生语法上有效的电子邮件地址 .

  • 1

    这些规格允许一些非常疯狂的丑陋电子邮件地址 . 我经常对网站感到非常恼火甚至抱怨完全正常,有效的电子邮件地址,所以请尽量不要拒绝有效的电子邮件地址 . 接受一些非法地址比拒绝合法地址更好 .

    像其他人建议的那样,我会使用像/这样的简单正则表达式 . @ . /然后发送验证邮件 . 如果验证非常重要,那么验证是非常重要的,因为合法的电子邮件地址仍然可以属于访客以外的其他人 . 或者包含一个意外但致命的拼写错误 .

    *编辑:从正则表达式的域部分删除点,因为 a@to 仍然是有效的电子邮件地址 . 所以即使我的超简化验证也拒绝了有效地址 . 是否有任何缺点只是接受包含@的东西在前面和后面的东西?

  • 11

    一篇关于这个主题的非常好的文章I Knew How To Validate An Email Address Until I Read The RFC

相关问题