【问题标题】:How To Negate Regex [duplicate]如何否定正则表达式
【发布时间】:2013-01-18 22:13:43
【问题描述】:

可能重复:
Regular expression to match string not containing a word?
How can I invert a regular expression in JavaScript?

假设我有正则表达式foo123。如何匹配所有 not foo123

【问题讨论】:

  • 要匹配的字符串可以有不同的长度?
  • 当然。我试图不匹配的实际模式是:^P[0-9]{1,}$
  • 在搜索或验证中匹配?对于验证,您可以使用相同的字符串,但对匹配函数的结果使用否定。

标签: regex preg-match regex-negation


【解决方案1】:

为此使用负前瞻。

(?!foo123).+

匹配除foo123以外的任何字符串

如果你也想匹配空字符串,使用(?!foo123).*

在您的情况下(根据评论),所需的正则表达式是(?!P[0-9]{1,}).+

它匹配 P123,但不匹配 P123

【讨论】:

  • 如果您在文件中搜索,这将不起作用(搜索时它们都不会正常工作,但这可能不是 OP 想要的)。第一个正则表达式对于验证也是错误的。
  • @nhahtdh 怎么回事?
  • 我不应该对你投反对票,因为这个问题本身就令人困惑。无论如何,为了匹配:(?!foo123).+(?!foo123).* regex101.com/r/gC0xA6 添加 ^$ 以进行验证 regex101.com/r/pS3zM5 检查整​​个字符串是否不遵循模式可以通过对匹配函数的结果使用否定来完成正则表达式内的否定
  • 我无法理解匹配afoo123khsdkfh 但不是foo123khsdkfh
  • 搜索:\b(foo123)\b|. 替换为:(?{1}\1)
猜你喜欢
  • 1970-01-01
  • 2019-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多