PHP - 密码正则表达式要求
PHP - Password RegEx requirements
我正在尝试验证新用户帐户的密码是否符合这些条件:
- 长度在 8-30 个字符之间
- 至少包含 1 个小写字母 (a-z)
- 至少包含 1 个大写字母 (A-Z)
- 至少包含 1 个以下特殊字符:_-!#*@&
我有这样的功能:
function validPassword($str) {
return preg_match("^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[_-!#*@&])[A-Za-z\d_-!#*@&]{8,30}$", $str);
}
但是我收到一个错误。对于此密码,它应该 return "true" 例如:HelloWorld123!
但它 return 是错误的。知道哪里出了问题吗?
if (validPassword($password) == true) {
// good password
}
您忘记转义“-”和分隔符...
function validPassword($str) {
return preg_match("/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[_\-!#*@&])[A-Za-z\d_\-!#*@&]{8,30}$/", $str);
}
您的正则表达式有错误,这就是为什么首先没有匹配项。
将您的正则表达式更改为:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[_\-!#*@&])[A-Za-z\d_\-!#*@&]{8,30}$
在此处查看正在运行的正则表达式:https://regex101.com/r/ogPPeb/1
我正在尝试验证新用户帐户的密码是否符合这些条件:
- 长度在 8-30 个字符之间
- 至少包含 1 个小写字母 (a-z)
- 至少包含 1 个大写字母 (A-Z)
- 至少包含 1 个以下特殊字符:_-!#*@&
我有这样的功能:
function validPassword($str) {
return preg_match("^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[_-!#*@&])[A-Za-z\d_-!#*@&]{8,30}$", $str);
}
但是我收到一个错误。对于此密码,它应该 return "true" 例如:HelloWorld123!
但它 return 是错误的。知道哪里出了问题吗?
if (validPassword($password) == true) {
// good password
}
您忘记转义“-”和分隔符...
function validPassword($str) {
return preg_match("/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[_\-!#*@&])[A-Za-z\d_\-!#*@&]{8,30}$/", $str);
}
您的正则表达式有错误,这就是为什么首先没有匹配项。
将您的正则表达式更改为:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[_\-!#*@&])[A-Za-z\d_\-!#*@&]{8,30}$
在此处查看正在运行的正则表达式:https://regex101.com/r/ogPPeb/1