【问题标题】:RegEx not allowing less than 3 characters after dot(.)正则表达式在点(。)之后不允许少于 3 个字符
【发布时间】: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


【解决方案1】:

只需删除靠近中间的正则表达式的([a-zA-Z]{2,4})+ 部分。我不明白为什么一开始会出现这种情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-02
    • 1970-01-01
    相关资源
    最近更新 更多