我写了一个函数来验证密码是否有效。我遇到的唯一问题是弄清楚为什么我用JavaScript编写的这种模式在使用密码测试时没有评估为真:'SteveRogers#256'。这是我宣布正则表达式模式的问题吗?
PHP
function check_password($pass_word)
{
$pattern = "#.*^(?=.{8,15})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*\W).*$#";
return (preg_match($pattern, $pass_word));
}
的JavaScript
function check_password(pass_word) {
var pattern = new RegExp("#.*^(?=.{8,15})(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*\W).*$#");
return pattern.test(pass_word);
}
答案 0 :(得分:3)
在Javascript中删除正则表达式分隔符,因为new RegExp
在构造函数中使用String。正确的Javascript代码应该是:
var pattern = new RegExp("^(?=.*?[a-z])(?=.*?[A-Z])(?=.*?[0-9])(?=.*?\\W).{8,15}$");