2016-01-15 53 views
13

Dưới đây là quy tắc của tôi nhập mật khẩu:Regex Validation trong 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}]', 
]; 

Tôi cố gắng để thêm quy tắc như vậy mà nó phải có

  1. ít nhất một char nhỏ
  2. ít nhất một chữ cái lớn
  3. ít nhất một số
  4. ít nhất một người đặc biệt char
  5. phút 8 chars

Tôi cố gắng này và nó hoạt động required|confirmed|min:8|max:100|regex:/^[\w]{1,}[\W]{1,}$/, trên một phần mềm thử nghiệm regex. nhưng không chắc chắn lý do tại sao nó không hoạt động trong Laravel

Tôi có thiếu gì đó không?

Trả lời

22

Sử dụng:

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

Thứ nhất, bạn không cần phải kiểm tra xác nhận riêng biệt. Chỉ cần sử dụng quy tắc confirmed.

Biểu thức bạn đang sử dụng không hợp lệ và không liên quan gì đến những gì bạn muốn. Tôi đề nghị bạn làm some research trên các cụm từ thông dụng.

Do thực tế là biểu thức được hiển thị ở trên sử dụng đường ống (|), bạn có thể chỉ định quy tắc sử dụng mảng.

Chỉnh sửa: Bạn cũng có thể sử dụng this expression, dường như đã được kiểm tra kỹ lưỡng hơn một chút.

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

Đặt giới hạn thấp về số ký tự mà người dùng có thể sử dụng cho mật khẩu của họ có thể dẫn đến trải nghiệm người dùng kém, đặc biệt khi người dùng sử dụng trình quản lý mật khẩu tạo mật khẩu vượt quá 20 ký tự hoặc họ muốn sử dụng cụm từ mật khẩu của họ. –

6

Bạn có thể muốn kiểm tra PasswordStrengthPackage. Nó đăng ký các quy tắc xác thực mới để thực hiện những gì bạn cần và dễ đọc hơn nhiều so với biểu thức chính quy. Vì vậy, trong trường hợp của bạn, bạn có thể có điều này:

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

Nguyên tắc Password_confirmation là không cần thiết miễn là giá trị xác nhận là hiện tại và bạn thêm sự cai trị confirmed cho trường Password.

Các vấn đề liên quan