Below is my rule for password:
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}]',
];
I am trying to add the rule such that it must have
- atleast one small char
- atleast one big char
- atleast one number
- atleast one special char
- min 8 chars
I tried this and it works required|confirmed|min:8|max:100|regex:/^[\\w]{1,}[\\W]{1,}$/
, on a regex tester software . but not sure why it does not work in Laravel
Am I missing something ?
Use:
return [
'password' => [
'required',
'confirmed',
'min:8',
'max:50',
'regex:/^(?=.*[a-z|A-Z])(?=.*[A-Z])(?=.*\d)(?=.*(_|[^\w])).+$/',
]
];
Firstly, you do not need to check the confirmation separately. Just use the confirmed
rule.
The expression you were using was invalid, and had nothing to do with what you wanted. I do suggest you do some research on regular expressions.
Due to the fact that the expression shown above uses pipes ( |
), you can specify the rules using an array.
Edit: You could also use this expression , which appears to have been tested a little more thoroughly.
/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%]).*$/
You might want to check the PasswordStrengthPackage . It registers new validation rules that do what you need and are much more readable than a regular expression. So in your case you can have this:
return [
'Password' => 'required|min:8|max:100|case_diff|numbers|letters|symbols|confirmed'
];
The Password_confirmation
rule is not needed as long as the confirmation value is present and you add the confirmed
rule for the Password
field.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.