Отрицать весь шаблон регулярных выражений, когда отрицательный обход не работает
У меня было регулярное выражение, которое совпадает с 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
- Появляется почтовый ящик, поэтому он недействителен
Мне известно о нескольких похожих постах, таких как:
- Как отрицать все регулярные выражения?
- Регулярные выражения и отрицание всей группы символов
- Regex для отрицания всего слова?
где в значительной степени negative lookaround
это решение.
1 ответ
Вы должны использовать этот негативный взгляд:
^(?!.*p\.? *o\.? *box).*
Разница заключается в использовании начального якоря ^
и использование .*
в образце предвкушения.