#php #regex
#php #регулярное выражение
Вопрос:
У меня есть следующее регулярное выражение
/^ [0-9]{1,3}s[0-9]{1,6}s[0-9s]{5,8}$/u
в моем PHP-коде. И я не могу понять, какие строки будут соответствовать этому выражению.
Я попробовал следующее
7 777 777777
и это не соответствует … не могли бы вы помочь мне понять — какая строка будет соответствовать этому регулярному выражению?
Ответ №1:
Это действительно соответствует. Возможно, в вашем коде есть ошибка? Вот правильный подход:
$s = ' 7 777 777777';
$pattern = '/^ [0-9]{1,3}s[0-9]{1,6}s[0-9s]{5,8}$/u';
echo preg_match($pattern, $s);
Результат:
1
Посмотрите, как это работает онлайн: ideone
Комментарии:
1. да, вы правы! спасибо! Я попытался протестировать ее здесь ( regextester.com ) и здесь( regexpal.com ) и там написано «совпадений нет». Как я теперь понимаю, эти сервисы корректно работают только с ^ [0-9]{1,3} s[0-9]{1,6}s[0-9]{5,8}$ вариант регулярного выражения.
2. Я подумал то же самое, но когда я перешел к codepad.org чтобы опубликовать пример, я получил сообщение об ошибке,
Warning: preg_match(): Internal pcre_fullinfo() error -3 on line 4
как показано здесь ( codepad.org/tBMeMoVW ) (Мне пришлось удалить модификатор u, потому что их php не был скомпилирован с поддержкой utf8, но в этом простом примере это не должно иметь значения). Возможно, если бы error_reporting был настроен на отображение предупреждений, была бы видна аналогичная ошибка.