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

如何否定整个正则表达式?

  •  76
  • IAdapter  · 技术社区  · 15 年前

    例如,我有一个正则表达式 (ma|(t){1}) ma t 不匹配 bla .

    我想否定正则表达式,因此它必须匹配 而不是 妈妈 t型 , 在这个正则表达式中添加一些东西 布拉 然而,实际的正则表达式更为复杂。

    3 回复  |  直到 12 年前
        1
  •  106
  •   Community CDub    8 年前

    使用负面环视: (?! pattern )

    可以使用肯定的lookarounds断言模式匹配。负lookarounds则相反:它用于断言模式不匹配。一些风格支持断言;有些人对后视等作了限制。

    指向regular-expressions.info的链接

    另请参见

    更多示例

        2
  •  58
  •   Alan Moore Chris Ballance    15 年前

    假设您只想禁止与regex完全匹配的字符串(即。, mmbla 没关系,但是 mm

    ^(?!(?:m{2}|t)$).*$
    

    (?!(?:m{2}|t)$) 是否定的 lookahead ; 上面写着“从当前位置开始,接下来的几个字符是 毫米 t ,然后是字符串的结尾( ^ )在开头确保在字符串的开头应用了lookahead。如果成功的话 .*

    仅供参考,如果您使用的是Java matches() ^ $ 不过,需要在内部进行前瞻。

        3
  •  1
  •   Ofer Skulsky    7 年前
    \b(?=\w)(?!(ma|(t){1}))\b(\w*)
    

    这是针对给定正则表达式的。
    \b是查找单词边界。

    对原始正则表达式的负面展望是为了防止与之匹配。

    将容纳单词的组是第3组。
    简单的(?)?!模式)将不工作,因为任何子字符串都将匹配
    简单的^(?!(?):m{2}| t)$).*$将不起作用,因为它的粒度是整行的

        4
  •  0
  •   DAVID AJAYI    4 年前

    Laravel有一个not\ regex,其中验证中的字段不能与给定的正则表达式匹配;使用PHP preg_match

    'email' => 'not_regex:/^.+$/i'