2016-01-15 1 views
13

Ниже мое правило пароль:Regex проверки в Laravel 5.2

return [ 
    'Password'     => 'required|min:8|max:100|regex:[a-z{1}[A-Z]{1}[0-9]{1}]', 
    'Password_confirmation'  => 'required|min:8|max:100|regex:[a-z{1}[A-Z]{1}[0-9]{1}]', 
]; 

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

  1. по крайней мере один маленький символ
  2. atleast one big char
  3. atleast one number
  4. по крайней мере один специальный символ
  5. мин 8 символов

Я попробовал это, и это работает required|confirmed|min:8|max:100|regex:/^[\w]{1,}[\W]{1,}$/ на тестер программного обеспечения в регулярных выражений. но не уверен, почему он не работает в Laravel

Я что-то упустил?

ответ

22

Использование:

return [ 
    'password' => [ 
     'required', 
     'confirmed', 
     'min:8', 
     'max:50', 
     'regex:/^(?=.*[a-z|A-Z])(?=.*[A-Z])(?=.*\d)(?=.*(_|[^\w])).+$/', 
    ] 
]; 

Во-первых, вам не нужно проверять подтверждения отдельно. Просто используйте правило confirmed.

Выражение, которое вы использовали, было недействительным и не имело никакого отношения к тому, что вы хотели. Я предлагаю вам сделать some research о регулярных выражениях.

В связи с тем, что выражение, показанное выше, использует трубы (|), вы можете указать правила, используя массив.

Редактировать: Вы также можете использовать this expression, который, кажется, был протестирован немного более тщательно.

/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%]).*$/ 
+3

Установка нижнего предела количества символов, которые пользователь может использовать для своего пароля, может привести к плохой работе с пользователем, особенно когда пользователь использует диспетчер паролей, который генерирует пароли более 20 символов или они хотят использовать фразу как их пароль. –

6

Возможно, вы захотите проверить PasswordStrengthPackage. Он регистрирует новые правила проверки, которые делают то, что вам нужно, и являются гораздо более читабельными, чем регулярное выражение. Так что в вашем случае вы можете иметь это:

return [ 
    'Password' => 'required|min:8|max:100|case_diff|numbers|letters|symbols|confirmed' 
]; 

Password_confirmation правило не требуется до тех пор, пока значение подтверждения присутствует и вы добавляете confirmed правило для Password поля.