[英]Regex Validation in 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}]',
];
我试图添加必须具有的规则
- 至少一个小炭
- 至少一个大字符
- 至少一个号码
- 至少一个特殊的字符
- 最少8个字符
我尝试了这个,它在regex测试仪软件上required|confirmed|min:8|max:100|regex:/^[\\w]{1,}[\\W]{1,}$/
。 但不确定为什么它在Laravel中不起作用
我错过了什么吗?
使用:
return [
'password' => [
'required',
'confirmed',
'min:8',
'max:50',
'regex:/^(?=.*[a-z|A-Z])(?=.*[A-Z])(?=.*\d)(?=.*(_|[^\w])).+$/',
]
];
首先,您无需单独检查确认。 只需使用confirmed
规则即可。
您使用的表达式无效,与您想要的内容无关。 我建议你对正则表达式做一些研究 。
由于上面显示的表达式使用管道( |
),您可以使用数组指定规则。
编辑:您也可以使用此表达式 ,它似乎已经过更彻底的测试。
/^.*(?=.{3,})(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[\d\X])(?=.*[!$#%]).*$/
您可能需要检查PasswordStrengthPackage 。 它注册了新的验证规则,这些规则可以满足您的需要,并且比正则表达式更具可读性。 所以在你的情况下你可以这样:
return [
'Password' => 'required|min:8|max:100|case_diff|numbers|letters|symbols|confirmed'
];
只要存在确认值并且您为Password
字段添加confirmed
规则,就不需要Password_confirmation
规则。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.