Отрицать весь шаблон регулярных выражений, когда отрицательный обход не работает

У меня было регулярное выражение, которое совпадает с PO BOX по данному адресу - /p\.? *o\.? *box/i, Но недавно мое требование изменилось, чтобы НЕ соответствовать PO BOX. Другими словами, адрес действителен, когда PO BOX не найден. Я пытался отменить этот шаблон, чтобы он соответствовал адресу, который не имеет PO BOX, используя negative lookaheadвот что я придумала до сих пор: /.*(?!p\.? *o\.? *box).*/i, но это не работает прямо сейчас: https://regex101.com/r/oN1jZ8/1

Например, я стараюсь соответствовать следующему:

  • это действительный адрес

Но не следующее:

  • это неверный адрес, потому что он содержит PO BOX
  • Появляется почтовый ящик, поэтому он недействителен

Мне известно о нескольких похожих постах, таких как:

где в значительной степени negative lookaround это решение.

1 ответ

Решение

Вы должны использовать этот негативный взгляд:

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

Разница заключается в использовании начального якоря ^ и использование .* в образце предвкушения.

Обновленная демоверсия RegEx

Другие вопросы по тегам