否定正则表达式PO BOX

Sne*_*hal 2 regex

我有一个下面的正则表达式,如果找到邮政信箱办公室组合,则返回true

\b[P|p]*(OST|ost)*\.*\s*[O|o|0]*(ffice|FFICE)*\.*\s*[B|b][O|o|0][X|x]\b
Run Code Online (Sandbox Code Playgroud)

我希望与此完全相反,如果一个特定的字符串具有po票房的组合,那么它应该返回false,否则允许每一件事

请有人帮我这个

Tom*_*lak 7

伪代码:

if not regex.matches(string)
  ...
end if
Run Code Online (Sandbox Code Playgroud)

没有简单的方法可以使正则表达式匹配"除了复杂的表达式之外的所有东西".

匹配表达式并否定结果.

另外,你的正则表达式是这样复杂的.尝试

\bp(ost)?[.\s-]*o(ffice)?[.\s-]+box\b

设置单行模式和忽略大小写标志.我认为确实不需要匹配0代替o,但这取决于你.[o0]如果必须,请使用.


小智 7

试试我的:

// leon's p.o. box detection regex
// for better results, trim and compress whitespace first

var pobox_re = /^box[^a-z]|(p[-. ]?o.?[- ]?|post office )b(.|ox)/i,
    arr = [
      "po box",
      "p.o.b.",
      "p.o. box",
      "po-box",
      "p.o.-box",
      "PO-Box",
      "p.o box",
      "pobox",
      "p-o-box",
      "p-o box",
      "post office box",
      "P.O. Box",
      "PO Box",
      "PO box",
      "box 122",
      "Box122",
      "Box-122",
    ];

for (var i in arr)
    console.log(pobox_re.test(arr[i]));
Run Code Online (Sandbox Code Playgroud)