【发布时间】:2017-09-15 17:09:07
【问题描述】:
我的网站有一个注册页面。
当用户填写表单时,他们会通过 JavaScript 正则表达式获得实时验证,效果很好。这是通过以下方式完成的:
var password = document.getElementsByName("password")[0].value;
var pattern = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)([a-zA-Z0-9!\"\#$%&\'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]{6,})$/;
if(pattern.test(password)){
document.getElementById("check_password").innerHTML = "Password is valid.";
} else {
document.getElementById("check_password").innerHTML = "Password is invalid. It should have at least 6 characters, and 1 lowercase letter, uppercase letter, and number.";
}
当用户通过以下方式提交表单时使用 PHP 正则表达式:
if(!preg_match("/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)([a-zA-Z0-9!\"\#$%&\'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]{6,})$/", $_POST["password"])){
$error = "Password is invalid. It should have at least 6 characters, and 1 lowercase letter, uppercase letter, and number.";
}
但是,即使 JavaScript 没有,PHP 也会不断抛出错误。两个正则表达式是相同的,并且已经在 PHP 设置和 JavaScript 设置中进行了测试。但它在 JavaScript 中有效,但在 PHP 中无效!
为什么它在 PHP 中不起作用,我该如何解决这个问题?
【问题讨论】:
-
分享有问题的输入。
-
heHE12 就是一个例子。它将匹配 regex101.com 上看到的正则表达式,但在 PHP 的 preg_match() 中仍然不匹配
-
@revo 这个密码不应该是个好密码
-
@revo 这不是复制品吗?代码说它应该通过时失败!并删除 !真的没有意义。
-
问题出在反斜杠上,各位。
标签: javascript php regex