【问题标题】:Make a regex to unmatch a specific email case制作正则表达式以取消匹配特定的电子邮件案例
【发布时间】:2017-06-14 16:41:32
【问题描述】:

在使用正则表达式验证 EMAIL 时,由于无法用 RFC 2822 中的复制和粘贴替换表达式,因此我必须对此进行修改:

^\.*[^\s]+@[a-zA-Z0-9]+(?:\.[a-zA-Z0-9-]+)*$

为了使它不匹配这种情况:

test@test

这是链接:https://regex101.com/r/RGvyHk/2

【问题讨论】:

  • Replace the last * with + to require at least 1 occurrence of (?:\.[a-zA-Z0-9-]+) pattern\ 后面的 ^ 是错字吗?您的意思是在开头匹配文字点吗?
  • 我是正则表达式的新手,我认为说“每个字符”是一种表达方式,但删除它效果很好,所以我明白这是隐含的......
  • 每个字符都可以与[\s\S][^] 匹配。 . 匹配除换行符以外的任何字符(不是\n\r 等)。 /\./ 将匹配文字句号字符,因为 . 已转义。在您的模式中,\.* 匹配零个或多个句号。所以,例如.....@test can be matched
  • 好的,谢谢!

标签: javascript regex


【解决方案1】:

将最后一个 * 替换为 + 以要求至少出现 1 次 (?:\.[a-zA-Z0-9-]+) 模式。

使用

^[a-zA-Z0-9]+@[a-zA-Z0-9]+(?:\.[a-zA-Z0-9-]+)+$
                                             ^

请参阅regex demo

请注意,这种模式限制性太强。您应该考虑使用更宽松的模式,例如 /^\S+@\S+\.\S+$/,它只需要 @ 用 1+ 个非空白符号括起来,然后一个点后跟 1+ 个非空白。请注意,此模式仍然不允许电子邮件中包含空格,但也允许空格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    相关资源
    最近更新 更多