Laravel preg_match (): конечный разделитель '/' не найден

Я работаю над Laravel 4.2. Я пытаюсь использовать Validator для проверки поля имени с помощью регулярного выражения, вот мое правило ниже:

 public static $rules_save = [

        'class_subjects' => 'required|regex:/[0-9]([0-9]|-(?!-))+/'
    ];

Но как только я вызываю правило для проверки, выдается ошибка, см. Ниже:

preg_match(): No ending delimiter '/' found

person Arlind    schedule 27.09.2015    source источник


Ответы (1)


Поскольку в вашем регулярном выражении есть канал, вы должны использовать массив:

public static $rules_save = [
    'class_subjects' => ['required', 'regex:/[0-9]([0-9]|-(?!-))+/'],
];

Из документов:

При использовании шаблона regex может потребоваться указать правила в массиве вместо использования разделителей каналов, особенно если регулярное выражение содержит символ вертикальной черты.

person Joseph Silber    schedule 27.09.2015
comment
Спасибо, это работает. Я читал это раньше и просто подумал, что мне это не понадобится. - person Arlind; 27.09.2015
comment
хаха, почему ты так подумал? В нем прямо говорится, что если у вас есть труба ... - person Juan; 09.11.2016
comment
Позвольте мне объяснить прямо. Вам просто нужно добавить [ ] до и после правила проверки, если вы используете символ вертикальной черты - person Ray Coder; 14.10.2020