【问题标题】:regex opposite of exact phrase (openwebmail)与精确短语相反的正则表达式(openwebmail)
【发布时间】:2016-08-21 12:16:54
【问题描述】:

我需要找到所有不是info@example.com 的电子邮件才能使用正则表达式配置openwebmail

结果:

abbb@example.com --  true

76312783dd@example.com -- true

8734289347@test.it -- true

info@example.com -- false

【问题讨论】:

  • ^(?!info@example\.com$)\w+@\w+\.\w+$

标签: regex regex-negation


【解决方案1】:

这就是我的答案:

^(?!info@example\.com$)((\w+|\.)+@\w+(\.\w+)+)$

这将匹配您示例中除info@example.com 之外的所有内容,以及更多有用的内容,例如test.example@mail.co.uk,如下面的示例所示:

Click here for the example on Regex101

编辑

您也可以将正则表达式更改为:

 ^(?!info@example\.com$)((\w+\.?)+@\w+(\.\w+)+)$

要禁止电子邮件:info..example@mail.com,但由于您只是在搜索电子邮件,因此您不太可能遇到格式为 info..example@mail.com 的电子邮件

细分

  • ^ 字符串开始
  • (?!) 负前瞻
  • info@example\.com$ info.example.com 的文字匹配,直到字符串的末尾。
  • (\w+|\.)+ 用字母和数字捕获组 1 次或多次,或者一个点,1 次或多次 将匹配 example..test@mail.com
  • (\w\.?)+ 用字母捕获组 1 次或多次,后面的可选点,1 次或多次。 将不匹配 example..test@mail.com
  • @\w+ 匹配 @ 的字面意义,以及后面的任何字母或数字。
  • (.\w+)+ 匹配一个点和它后面的任何字母 1 次或多次。点不是可选的,因为类似example@test.com. 的电子邮件无效。
  • $字符串结束

【讨论】:

  • 我试过了,但它在 openwebmail 上不起作用。替代品?
【解决方案2】:

使用这个绝招!

^info@example\.com$|^(\w+@\w+\.\w+)$

演示: https://regex101.com/r/zJ5nY5/1

解释:

  1. a|b|(c|d) 并取第 1 组的值。这是有史以来最流行的正则表达式技巧之一。这样,如果您采用第 1 组值,ab 将被自动忽略,您只批准 cd
  2. \w 是我们通常在单词中找到的任何字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多