Проверка правильности в Laravel 5.2

Ниже мое правило для пароля:

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}]', ]; 

Я пытаюсь добавить правило, чтобы оно имело

  1. по крайней мере один маленький символ
  2. по крайней мере один большой символ
  3. по крайней мере один номер
  4. по крайней мере один специальный символ
  5. мин 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 .