php - PHP - 密码正则表达式要求
问题描述
我正在尝试验证新用户帐户的密码是否符合以下条件:
- 长度在 8-30 个字符之间
- 至少包含 1 个小写字母 (az)
- 至少包含 1 个大写字母 (AZ)
- 包含至少 1 个以下特殊字符:_-!#*@&
我有这样的功能:
function validPassword($str) {
return preg_match("^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[_-!#*@&])[A-Za-z\d_-!#*@&]{8,30}$", $str);
}
但我收到一个错误。它应该为此密码返回“true”,例如:HelloWorld123!
但相反,它返回错误。知道可能出了什么问题吗?
if (validPassword($password) == true) {
// good password
}
解决方案
您忘记转义“-”和分隔符...
function validPassword($str) {
return preg_match("/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[_\-!#*@&])[A-Za-z\d_\-!#*@&]{8,30}$/", $str);
}
推荐阅读
- c# - EF Core:无法跟踪实体类型的实例,因为另一个实例具有相同的键值
- javascript - 第 530 行的错误 1062 (23000):重复条目 '20190617051131-apply-schema.js' 用于键 'PRIMARY'
- laravel - Laravel 附加在关联键上
- opencv - 将 numpy ndarray (1, 160, 160) 保存到灰度图像中
- java - 创建一个 ID 数组并随机化他们的年龄
- arrays - 如何分配 ID 来识别重复的数组元素?
- node.js - 如何在猫鼬中为模式类型日期分配日期值
- algorithm - Big-o 复杂性问题 - 线性累积功率
- node.js - NodeJS 执行一个提示键盘输入的 bash 脚本
- java - 如何在 `var` 关键字上抑制此警告?