Выберите строку, которая соответствует следующему регулярному выражению

#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 был настроен на отображение предупреждений, была бы видна аналогичная ошибка.