Отрицание регулярного выражения, совпадающего с одним словом, чтобы не возвращать совпадений
Мне нужно отрицать это регулярное выражение:
^sofia$
Как я могу это сделать?
1 ответ:
Вам нужен отрицательный внешний вид:
^(?!sofia$).*$
Смотрите демо
EDIT: если вы просто заинтересованы в булевом результате с
preg_match
, Вы можете удалить.*$
.Также, если входные строки содержат символы новой строки, требуется однострочный модификатор
/s
(или его встроенный вариант(?s)
). Например,(?s)^(?!sofia$).*$
Или
/^(?!sofia$).*$/s
Ваш
^sofia$
соответствует строке / строке, равнойsofia
, поэтому вы должны искать регулярное выражение, которое будет соответствовать любой строке / строке, которая не является равноsofia
.Отрицательные наблюдатели могут использоваться для ограничения общих шаблонов. Здесь
.*
соответствует любым символам, кроме новой строки, 0 или более раз. Lookahead проверяет, нет лиsofia
прямо в начале строки / строки.