代码之家  ›  专栏  ›  技术社区  ›  Adam

电子邮件的正则表达式,但不允许以“.co”结尾的地址`

  •  0
  • Adam  · 技术社区  · 3 年前

    ^(?=[\w\s])\s*[-+.'\w]+@[-.\w]+\.[-.\w]{2,}\s*$

    但是,用户有时会输入一个地址,如“john@gmail.co". 我可以从正则表达式中排除“co”,但我仍然希望允许”john@example.co.uk", see here

    我看着 this post 但我不知道该如何在这部分中包含这一点 [-.\w]{2,}

    1 回复  |  直到 3 年前
        1
  •  2
  •   The fourth bird    3 年前

    您可以在开始时编写模式,而无需前瞻,如下所示:

    ^\s*[-+.'\w]+@\w+(?:[-.]\w+)*\.(?!co\s*$)[a-z]{2,}\s*$
    

    [-+.'\w] \w

    模式匹配:

    • ^ 字符串开头
    • \s*[-+.'\w]+@ 匹配可选的空白字符,并重复字符类中列出的任何字符,直到匹配为止@
    • \w+(?:[-.]\w+)* 在@之后,以匹配的1+字字符开始,并可选地重复 . - 和1+字字符
    • \.(?!co\s*$) 匹配一个点并使用一个否定的前瞻断言not co
    • [a-z]{2,}\s* 匹配2个或更多字符a-z和可选的空白字符
    • $ 结束

    Regex demo

    \s* 从图案的开始和结束。