Laravel валидация по regex

520
02 февраля 2017, 03:44

Делаю валидацию формы с ларавельным валидатором, ругается на 'vk_url' => 'regex:/^(http(s)?:\/\/)?(www\.)?vk\.com\/(\w|\d)+?\/?$/', а именно:

ErrorException in Validator.php line 1805:
preg_match(): No ending delimiter '/' found

выражение вроде стандартного вида, перепробовал уже много вариантов. В каком виде валидатор принимает регулярки, как нужно переделать это выражение?

Answer 1

В Laravel есть определенные особенности работы с регулярками. Чаще всего возникают пробелемы именно с оператором ИЛИ, так как символы | используются самим Laravel для передачи массива параметров.

Это описано в документации (по-английски): "При использовании регулярных выражений может возникнуть необходимость указать правила в виде массива вмесио разделителей |, особенно если в самом регулярном выражении используется данный символ." (в моем вольном переводе).

В вашем конкретном случае можно просто избавится от этого оператора:

'vk_url' => 'regex:/^(http(s)?:\/\/)?(www\.)?vk\.com\/\w+\/?$/'
                                                      ^^^^

так как \w находит и цифры тоже.

READ ALSO
Замена фнукции session_is_registered

Замена фнукции session_is_registered

Доброго времени сутокВ древнем движке ShopScript ругается на устаревшую функцию

418
Подскажите где ошибка?

Подскажите где ошибка?

Не пойму, хочу посмотреть значение переменных после отправки формыобработчик та же страница

363
Вопрос по Simple HTML DOM

Вопрос по Simple HTML DOM

Доброго времени сутокСобственно в чем проблема, элементы я с горем пополам получаю

424
Как сделать relation с оператором like?

Как сделать relation с оператором like?

Здравствуйте, скажите пожалуйста, как настроить реляцию таким образом, что бы сопоставление реляции работало с оператором like, а не where, дело...

455