负先行正则表达式仍然匹配字符串

negative lookahead regex still matching string

所以我有这个正则表达式

(?!path1\/path2)

然而,这最终会正确匹配字符串 'path1/path2',即使我不希望任何具有 path1/path2 的字符串匹配

我做错了什么?

https://regex101.com/r/mL3qM5/1

您应该使用 ^ 锚定此前瞻并添加 .* 以确保我们检查没有换行符的整个字符串:

^(?!.*path1\/path2)

字符串锚点的开头告诉正则表达式引擎开始寻找开头的模式。在您的正则表达式中,它在第一个位置寻找该字符串,然后在第二个位置寻找匹配项。

现在,简单来说,^(?!.*path1\/path2) 匹配任何不包含 path1/path2.

的字符串