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

REGEX从找不到单词的地方选择困难

  •  1
  • MBF  · 技术社区  · 2 年前

    我需要一个正则表达式来匹配未找到特定名称或单词的钓鱼电子邮件名称。

    例如

    John Smith ([email protected])
    John Smith ([email protected])
    John Smith ([email protected])
    John Smith ([email protected])
    

    底部的电子邮件是唯一合法的电子邮件,需要忽略。

    我尝试过类似的方法:

    ^(J|j)ohn.(S|s)mith.*\@^((?i)\bmymail\.com\b)*$
    

    但这并不能选择3封糟糕的电子邮件。 也尝试类似于:

    ^(J|j)ohn.(S|s)mith.*@gmail\.com
    

    但这种方法只删除Gmail中的一个。

    我如何正确地进行模式匹配,以删除所有不正确的电子邮件(无论大小写),并且只允许一个域(在本例中为mymail.com)而不允许其他域?

    1 回复  |  直到 2 年前
        1
  •  3
  •   Gilles Quénot ticktalk    2 年前

    您可以将此正则表达式与负前瞻条件一起使用

    ^[jJ]ohn.[sS]mith[^@]*@(?!mymail\.com).+
    

    RegEx Demo

    RegEx详细信息:

    • ^ :启动
    • [jJ]ohn :匹配 John john
    • . :匹配任何字符
    • [sS]mith[ :匹配 Smith smith
    • [^@]* :匹配除之外的任何字符的0或kore @
    • @ :匹配 @
    • (?!mymail\.com) :如果我们有 mymail.com 在下一个位置
    • .+ :匹配任意字符的1+