Для начала, ваша строка электронной почты открыта неправильно:
'email' => /'^([a-zA-Z0-9_\-\.
// should be
'email' => '/^([a-zA-Z0-9_\-\.
Другая проблема заключается в том, что вы используете /
в качестве символа для сопоставления и используете его для начала / окончания регулярного выражения URL, не экранируя их в регулярном выражении. Самое простое решение - просто использовать другой символ для обозначения начала / конца регулярного выражения, например:
'http' => '@^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*$@'
То, что происходит, это то, что он видит '^(http|https|ftp)\:'
как регулярное выражение, а затем начинает искать варианты. Первый символ после «конца» регулярного выражения - это еще один '/'
, который является недопустимым параметром, следовательно, сообщение об ошибке.
РЕДАКТИРОВАТЬ: Что-то быстрое, что может решить проблему повторно: не соответствует. Вместо этого вы можете попробовать следующее:
'http' => '@^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?(/[a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~]*)?$@'