How To Negate Regex
Possible Duplicate:
Regular expression to match string not containing a word?
How can I invert a regular expression in JavaScript?
比如说我有雷吉克斯埃多克斯1〔0〕。如何匹配所有非foo123的内容?
- 要匹配的字符串可以有不同的长度?
- 当然。我尝试不匹配的实际模式是:^P[0-9]{1,}$
- 匹配,如搜索或验证?对于验证,可以使用相同的字符串,但对匹配函数的结果使用否定。
为此,请使用否定先行。
匹配除foo123以外的任何字符串
如果还要匹配空字符串,请使用(?!foo123).*。
在您的情况下(根据注释),所需的regex是(?!P[0-9]{1,}).+。
它匹配p和123,但不匹配p123。
- 如果在文件中搜索,这将不起作用(在搜索时,它们都不能正常工作,但这可能不是OP想要的)。第一个regex对于验证也是错误的。
- @恩赫德怎么了?
- 我不该投你的反对票,因为这个问题本身就令人困惑。总之,对于匹配:(?!foo123).+和(?!foo123).*regex101.com/r/gc0xa6添加^和$以验证regex101.com/r/ps3zm5,通过对匹配函数的结果使用否定,而不是在regex中使用否定,可以检查整个字符串是否不遵循模式。
- @那么你是说foo123khsdkfh不应该匹配,afoo123khsdkfh应该匹配?
- 由于行动计划不太清楚他想要什么(有很多方法可以解释这个问题),我的否决票有点不必要(正如我在之前的评论中提到的那样)。如果您稍微编辑一下您的答案,并澄清regex(用^和$包围)只能用于验证整个字符串与模式不匹配,那么我将删除下投。
- 我无法找到匹配afoo123khsdkfh但不匹配foo123khsdkfh的点。
- 搜索:\b(foo123)\b|.替换为:(?{1}\1)。
- @Justme没有理解你的观点。
- 在不是"Foo123"的文本中匹配所有的东西:也许我不理解这个问题。?
- @调整为什么要更换零件?OP只需要找到所有不是FOO123的东西。