【发布时间】:2013-11-25 03:27:23
【问题描述】:
我编写了一个函数来验证密码是否有效。我遇到的唯一问题是弄清楚为什么我用 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);
}
【问题讨论】:
-
javascript 不像 php 那样在模式字符串中使用模式分隔符。您需要从 js 中删除
#。 -
我讨厌那些要求我必须(几乎总是)在那里使用安全密码的网站。
-
@Dagon 哈哈,对吧?我现在只是需要一些东西。我很快就会强化模式。
-
更好,完全删除它。
-
@Dagon 你有什么建议?
标签: javascript php regex