В настоящее время у меня установлено регулярное выражение для проверки моих паролей:
/^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*\W).{6,}$/
Проверяет наличие как минимум 1 заглавных и строчных букв, 1 цифры, 1 специального символа / несловесного символа и минимум 6 символов.
Теперь я переношу все свои правила проверки на Соблюдение проверки . У меня большая часть настроек настроена красиво, но возникают трудности с проверкой пароля.
Мне известен метод regex
:
Validator::regex('/^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*\W).{6,}$/')->setName('Password');
Но это возвращает сообщение об ошибке, подобное этому:
Password must validate against "/^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*\W).{6,}$/"
Я хочу объединить методы, чтобы каждое правило устанавливалось в цепочке проверки. Поэтому, если вам не хватает цифры, она возвращает что-то вроде «Пароль должен содержать не менее 1 цифры», если вам не хватает прописного символа, возвращается «Пароль должен содержать не менее 1 символа верхнего регистра» и т. Д.
Я думал, что это можно сделать с помощью метода allOff
, при котором вы можете установить отдельные правила, которые будут проходить глобально, если все внутренние правила пройдут.
В качестве теста я попытался определить, содержит ли строка цифру и буквенный символ, например:
Validator::allOf(Validator::digit(), Validator::alpha())->setName('Password');
Результаты:
$password = 'test'; // Password must contain only digits (0-9)
$password = '1234'; // Password must contain only letters (a-z)
$password = 'test1234' // Password must contain only digits (0-9)
Глядя на это сейчас, вполне понятно, почему я получил эти ошибки, но я не вижу, как еще это сделать без метода regex
. Это то, что мне нужно после того, как это возможно, просто лучше использовать метод regex
в этом случае, я просмотрел список правил несколько раз, но, вероятно, пропустил тот, который мне нужен, так как есть довольно немногие.
Любая помощь приветствуется.