Как работает это регулярное выражение?

Рейтинг: 2Ответов: 1Опубликовано: 05.03.2015

В этой регулярке, которая соответствует строкам без слова foo внутри

^((?!foo).)*$

Что означает (?!foo) ? Как может быть позитивный просмотр вперёд без всяких символов до скобок?

Ответы

▲ 3Принят

Это называется "отрицательное заглядывание"

В оригинале звучит так

Starting at the current position in the expression, ensures that the given pattern will not match. Does not consume characters.

То есть, проверяет, что от текущей позиции нет нужных символов.

fo111 - подходит.
foo111 - уже не подходит.
afoo11 - также не подходит.

читать эту регулярку нужно так "для любого символа в строке не должно быть перед ним foo".