我的网站有一个注册页面.
当用户填写表单时,他们可以通过JavaScript Regex进行实时验证,该工作正常.这通过以下方式完成:
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.";
}
Run Code Online (Sandbox Code Playgroud)
当用户通过以下方式提交表单时,将使用PHP Regex:
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.";
}
Run Code Online (Sandbox Code Playgroud)
但是,即使JavaScript没有,PHP仍然会抛出错误.两个正则表达式都是相同的,并已在PHP设置和JavaScript设置中进行了测试.然而它适用于JavaScript而不是PHP!
为什么它在PHP中不起作用,我该如何解决这个问题呢?