@hovitox790

Почему регулярное выражение может не работать?

Добрый день, использую регулярное выражение:

echo preg_match('/^[a-zA-Z\ \-]{2,20}$|^[а-яА-Я\ \-]{2,20}$/', 'фывв');
echo preg_match('/^[a-zA-Z\ \-]{2,20}$|^[а-яА-Я\ \-]{2,20}$/', 'ооооооооооо');


5e7b11c169620249611787.png
5e7b11e7c2843845348591.png

Но php почему то возвращает возвращает статус проверки строки false, хоть regex101 возвращает true. Подскажите, что может быть не так?
  • Вопрос задан
  • 54 просмотра
Решения вопроса 2
twobomb
@twobomb
Добавь u
echo preg_match('/^[a-zA-Z\ \-]{2,20}$|^[а-яА-Я\ \-]{2,20}$/u', 'ооооооооооо');

чтобы обрабатывать как utf-8 строку
Ответ написан
VicTHOR
@VicTHOR
(╮°-°)╮┳━━┳ ( ╯°□°)╯ ┻━━┻
в regex101 Вы указали флаг m, а в коде нет
echo preg_match('/^[a-zA-Z\ \-]{2,20}$|^[а-яА-Я\ \-]{2,20}$/m', 'фывв');
echo preg_match('/^[a-zA-Z\ \-]{2,20}$|^[а-яА-Я\ \-]{2,20}$/m', 'ооооооооооо');


без него не работают символы ^ и $ как спецсимволы.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы