【发布时间】:2018-02-20 21:47:48
【问题描述】:
我有一个php页面:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
echo $_POST["username"];
echo $_POST["password"];
echo $_POST["confirm_password"];
echo $_POST["email"];
}
?>
<!DOCTYPE html>
<html>
<head>
<title>WordCat Signups</title>
<script type="text/javascript" src="signup_validate.js"></script>
</head>
<body>
<form action="" method="POST">
Username:<br><input type="text" name="username" placeholder="Username" onkeyup="check_username();"><span id="check_username"></span><br>
Password:<br><input type="password" name="password" placeholder="Password" onkeyup="check_password();"><span id="check_password"></span><br>
Confirm Password:<br><input type="password" name="confirm_password" placeholder="Confirm Password" onkeyup="check_passwords();"><span id="check_passwords"></span><br>
Email:<br><input type="email" name="email" placeholder="Email" onkeyup="check_email();"><span id="check_email"></span><br>
<input type="submit" name="submit" value="Signup"></br>
</form>
</body>
</html>
我有一些用于检查字段的 JavaScript:
function check_username(){
var username = document.getElementsByName("username")[0].value;
var pattern = /^[\w[^!\"\#$%&\'()*+,\-.\/:;<=>?@\[\\\]^_`{|}~]]{1,32}$/;
if(pattern.test(username)){
document.getElementById("check_username").innerHTML = "Username is valid.";
} else {
document.getElementById("check_username").innerHTML = "Username is invalid. It should only contain letters, numbers, and underscores, as well as have a maximum of 32 characters.";
}
}
function check_password(){
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 at least one number, uppercase, and lowercase character.";
}
}
function check_passwords(){
var password = document.getElementsByName("password")[0].value;
var confirm_password = document.getElementsByName("confirm_password")[0].value;
if(password == confirm_password){
document.getElementById("check_passwords").innerHTML = "Passwords match";
} else {
document.getElementById("check_passwords").innerHTML = "Passwords do not match.";
}
}
但是,对于 JavaScript,用户名和确认密码测试有效,但密码正则表达式无效。当我输入有效密码时。正则表达式可以在这里找到link,它对所有测试都是正确的。但是,当使用我的浏览器时,正则表达式无法在线获取有效密码!
【问题讨论】:
-
密码正则表达式看起来不错,只是
[A-z]已经匹配\[]^_`,因此您不必在字符类中指定它们。 -
您对哪个密码有疑问?
-
我的意思是 A-Z 对不起
-
嗯实际上我认为这是因为我在 XAMPP 上的 localhost 没有更新并显示我的更改...
-
问题解决了!
标签: javascript php html regex