laravel - Laravel 密码验证规则有错误
问题描述
验证规则:
密码包含来自以下五个类别中的至少三个的字符:
英文大写字符 (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'],
解决方案
您有多个正则表达式规则的问题,一个正则表达式可以概括您的所有规则。
^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$
这意味着,匹配:
{8,}
最少八个字符(因此不需要min:8
)A-Za-z
至少一个上下任意字母@$!%*#?&]
至少一个特殊字符。\d
数/秒
所以你的规则现在应该是这样的:
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'regex:^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$','confirmed'],
推荐阅读
- ruby-on-rails - 如何在 ActiveRecord 中创建一个数组?
- python - SQLAlchemy - 将 group_by 和 func.count() 与joinedload() 结合
- python - 将我的代码应用于具有相同数据的多个文件
- sql - 将子字符串转换为数字以执行乘法
- reactjs - 如何使用响应式网格(砌体)而不是列表来做 InfiniteLoder?
- ios - iOS 照片分享应用中的 Admob 序列实现
- javascript - 如何在 react-native 中使用 map()?
- android - 不工作 Facebook 应用内浏览器
- python - ValueError:hist 方法需要数字列,没有要绘制的内容
- amazon-web-services - 如何使用 terraform 将 s3 存储桶从一个区域克隆到另一个区域