Проверка пароля с помощью Respect Validation
В настоящее время у меня есть регулярное выражение для проверки моих паролей:
/^(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*\W).{6,}$/
При этом проверяется не менее 1 заглавного и строчного символов, 1 цифры, 1 специального символа / несловесного символа и минимум 6 символов.
Теперь я перенесу все свои правила проверки в Respect Validation. У меня большая часть настроек настроена красиво, но возникают трудности с проверкой пароля.
Я знаю о 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
В этом случае я несколько раз просматривал список правил, но, вероятно, пропустил тот, который мне нужен, поскольку их довольно много.
Любая помощь приветствуется.