Делаю валидацию формы с ларавельным валидатором, ругается на 'vk_url' => 'regex:/^(http(s)?:\/\/)?(www\.)?vk\.com\/(\w|\d)+?\/?$/', а именно:
ErrorException in Validator.php line 1805:
preg_match(): No ending delimiter '/' found
выражение вроде стандартного вида, перепробовал уже много вариантов. В каком виде валидатор принимает регулярки, как нужно переделать это выражение?
В Laravel есть определенные особенности работы с регулярками. Чаще всего возникают пробелемы именно с оператором ИЛИ, так как символы | используются самим Laravel для передачи массива параметров.
Это описано в документации (по-английски): "При использовании регулярных выражений может возникнуть необходимость указать правила в виде массива вмесио разделителей |, особенно если в самом регулярном выражении используется данный символ." (в моем вольном переводе).
В вашем конкретном случае можно просто избавится от этого оператора:
'vk_url' => 'regex:/^(http(s)?:\/\/)?(www\.)?vk\.com\/\w+\/?$/'
^^^^
так как \w находит и цифры тоже.
Продвижение своими сайтами как стратегия роста и независимости