当负面的观察不起作用时,否定整个正则表达式模式

时间:2016-02-16 16:49:59

标签: regex regex-negation negative-lookahead

我有一个匹配P.O.的正则表达式在给定地址上的BOX - /p\.? *o\.? *box/i。但最近我的要求更改为 NOT 匹配P.O.框。换句话说,地址在P.O.时有效。找不到BOX。我试图否定那个模式,所以它匹配一个没有P.O.的地址。使用negative lookahead框,这是我到目前为止提出的问题:/.*(?!p\.? *o\.? *box).*/i,但它现在无法正常工作:https://regex101.com/r/oN1jZ8/1

例如,我尝试匹配以下内容:

  • 这是一个有效的地址

但不是以下内容:

  • 这是一个无效的地址,因为它包含 P.O. BOX
  • po box 会显示无效

我知道一些类似的帖子,例如:

几乎negative lookaround就是解决方案。

1 个答案:

答案 0 :(得分:1)

你应该使用这种消极的前瞻:

^(?!.*p\.? *o\.? *box).*

区别在于使用开始锚^并在先行模式中使用.*

Updated RegEx Demo