Проверка регулярного выражения Laravel 5.6 всегда показывает ошибку - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь проверить введенную строку по выражению регулярного выражения, это нормально работает на веб-сайтах, таких как regexr и regex101 , но в laravel всегда отображается ошибка.

Регулярное выражение должно соответствовать следующим строкам:

FL-IV-1234
FL-III-1234
FL-II-56789
FL-I-1234334
FL-BR-II-53440
fl-iv-8484
fl-iii-84894
fl-ii-94 
fl-i-334

Выражение:

/(fl)-(IV-|I{1,3}-)(\d*\W)|((fl)-(br)-II-\d*\W)/i

Код:

$pattern = '/(fl)-(IV-|I{1,3}-)(\d*\W)|((fl)-(br)-II-\d*\W)/i';
$request->validate([
        'lic_no' => array('required', 'regex:'.$pattern),
    ]);

Также используется без переменной:

$request->validate([
        'lic_no' => array('required', 'regex:/(fl)-(IV-|I{1,3}-)(\d*\W)|((fl)-(br)-II-\d*\W)/'),
    ]);

Сообщение об ошибке:

The lic no format is invalid.

Пожалуйста, подскажите, спасибо!

1 Ответ

0 голосов
/ 14 ноября 2018

Ваше регулярное выражение не соответствует последнему элементу в вашем списке ожидаемых совпадений. Вы можете объединить второй вариант с первым и сделать последний \W необязательным:

/^fl-(IV|I{1,3}|br-II)-\d*\W?$/i

См. Демоверсию regex

Подробнее

  • ^ - начало строки
  • fl- - fl_ текст
  • (IV|I{1,3}|br-II) - группа захвата (добавьте ?: после (, чтобы сделать ее не захватывающей), сопоставляя IV, от одного до трех I с или br-II
  • - - дефис
  • \d* - 0+ цифр
  • \W? - необязательный символ без слова
  • $ - конец строки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...