I have a php page:
<?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>
I have some JavaScript which is meant to check the fields:
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.";
}
}
However, for the JavaScript, the Username and Confirm Password tests are working, but the Password regex is not. When I key in a valid passwords. The regex can be found here link and it is correct for all the tests. However when use my browser the regex fails for valid passwords online!
[A-z]already matches\[]^_`, so you do not have to specify them in the character class.