【发布时间】:2013-12-12 02:44:56
【问题描述】:
我们有一套用于验证电子邮件的正则表达式,效果很好。虽然我们最近发现如果电子邮件地址中包含点 (.),但如果点 (.) 后面的字符数少于 3 个,RegEx 验证将失败。例如:
-
test.abcd@gmail.com-> 通过 -
test.abc@gmail.com-> 通过 -
test.ab@gmail.com-> 失败 -
test.a@gmail.com-> 失败
这是正则表达式:
/^[-a-z0-9#$%^&'`?{}_=+\/}{\'?]+(\.[-a-z0-9#$%^&'`?{}_=+\/}{\'?]+([a-zA-Z]{2,4})+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i
【问题讨论】:
-
我做到了,但如果我能得到这个特定正则表达式的答案,那将是非常有益的。
-
为了学习,我建议使用这个免费的语法荧光笔regex101.com,它是迄今为止我尝试过的最好的。它甚至向您描述了正则表达式的每个部分,并提供了各种可用的正则表达式引擎。您可能可以使用元字符简化该正则表达式,而且您只需要在 tld 域和 @ 结构上进行匹配。 regular-expressions.info/email.html 权威来源详细描述了如何最好地做到这一点,我认为它也有 RFC 压缩版本,这太可怕了!!
-
谢谢,这是一个很棒的工具。
标签: regex