Ниже мое правило для пароля:
return [ 'Password' => 'required|min:8|max:100|regex:[az{1}[AZ]{1}[0-9]{1}]', 'Password_confirmation' => 'required|min:8|max:100|regex:[az{1}[AZ]{1}[0-9]{1}]', ];
Я пытаюсь добавить правило, чтобы оно имело
- по крайней мере один маленький символ
- по крайней мере один большой символ
- по крайней мере один номер
- по крайней мере один специальный символ
- мин 8 символов
Я пробовал это, и это required|confirmed|min:8|max:100|regex:/^[\w]{1,}[\W]{1,}$/
, в программном обеспечении для анализа регулярных выражений . но не уверен, почему он не работает в Laravel
Я что-то упускаю ?
Использование:
return [ 'password' => [ 'required', 'confirmed', 'min:8', 'max:50', 'regex:/^(?=.*[az|AZ])(?=.*[AZ])(?=.*\d)(?=.*(_|[^\w])).+$/', ] ];
Во-первых, вам не нужно проверять подтверждение отдельно. Просто используйте confirmed
правило.
Выражение, которое вы использовали, было недействительным и не имело никакого отношения к тому, что вы хотели. Я предлагаю вам провести некоторое исследование регулярных выражений.
Из-за того, что выражение, показанное выше, использует pipe ( |
), вы можете указать правила, используя массив.
Изменить: вы также можете использовать это выражение , которое, кажется, было проверено немного более тщательно.
/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%]).*$/
Возможно, вы захотите проверить PasswordStrengthPackage . Он регистрирует новые правила проверки, которые делают то, что вам нужно, и являются гораздо более читабельными, чем регулярное выражение. Итак, в вашем случае вы можете это сделать:
return [ 'Password' => 'required|min:8|max:100|case_diff|numbers|letters|symbols|confirmed' ];
Правило Password_confirmation
не требуется, пока присутствует значение подтверждения, и вы добавили confirmed
правило для поля Password
.