Laravel 密码验证规则有错误
Posted
技术标签:
【中文标题】Laravel 密码验证规则有错误【英文标题】:Laravel password validation rule with error 【发布时间】:2020-07-17 19:02:49 【问题描述】:验证规则:
密码包含来自以下五类中的至少三类的字符:
英文大写字符 (A – Z) 英文小写字符 (a – z) 以 10 位为基数 (0 – 9) 非字母数字(例如:!、$、# 或 %) Unicode 字符
我想使用上面的密码验证规则,我的代码是这样的。但我仍然只能通过数字注册到我的系统。
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'min:8', 'regex:/[a-z]/', 'regex:/[A-Z]/', 'regex:/[0-9]/', 'regex:/[@$!%*#?&]/','confirmed'],
【问题讨论】:
【参考方案1】:你有多个正则表达式规则的问题,一个正则表达式可以概括你所有的。
^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]8,$
这意味着匹配:
8,
最少八个字符(因此不需要min:8
)
A-Za-z
上下任意字母至少一个
@$!%*#?&]
至少一个特殊字符。
\d
number/s
所以你的规则现在应该是这样的:
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'regex:^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]8,$','confirmed'],
【讨论】:
不匹配 uni-codes 并且不尊重 3 out of 5 条件以上是关于Laravel 密码验证规则有错误的主要内容,如果未能解决你的问题,请参考以下文章