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