首页 > 解决方案 > PHP - 密码正则表达式要求

问题描述

我正在尝试验证新用户帐户的密码是否符合以下条件:

我有这样的功能:

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
}

标签: phpregexpasswordsalphanumeric

解决方案


您忘记转义“-”和分隔符...

function validPassword($str) {
  return preg_match("/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[_\-!#*@&])[A-Za-z\d_\-!#*@&]{8,30}$/", $str);
}

推荐阅读