[英]How do I validate a password using regular expressions?
有人可以帮助以下 JavaScript。 我是编码新手,目前正在使用正则表达式练习密码验证。 以下验证不起作用,我不明白为什么,因为我之前在不使用 re 的情况下练习了 pw 验证,并且效果很好。
例如: - 如果密码不匹配,则不显示错误消息,表格被接受。 - 如果用户名仅包含字母,则仍接受该表单。
任何帮助/提示都会很棒。 (ps这个js格式被在线导师使用了......不知道为什么它不适合我......但我也有点困惑他为什么按这个顺序编写js!)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<!--<link rel="stylesheet" type="text/css" href="stylesheet.css" > -->
<link type="text/css" rel="stylesheet" href="stylesheet.css">
</head>
<body>
<h1>Using regular expressions</h1>
<form onsubmit="return checkForm(this);">
<p> Username: <input type="text" name="username"/></p>
<p> Password: <input type="password" name="pwd1"/></p>
<p> Confirm Password: <input type="password" name="pwd2"/></p>
<p> <input type="submit"/></p>
</form>
<script>
function checkPassword(str) {
var re = /^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{8}$/;
return re.test(str);
}
function checkForm(form) {
if (form.username.value == "") {
alert("Username cannot be blank!");
form.username.focus();
return false;
}
re = /^\w+$/;
if (!re.test(form.username.value)) {
alert("Username must contain letters, numbers and underscores only");
form.username.focus();
return false;
}
if (form.pwd1.value != "" && form.pwd1.value == form.pwd2.value)
if(!checkPassword(form.pwd1.value)){
alert("Incorrect");
form.pwd1.focus();
return false;
}
alert("You have successfully registered!");
return true;
}
</script>
</body>
</html>
检查包含至少一个数字和一个特殊字符的 7 到 15 个字符的密码
function CheckPassword(inputtxt) {
var paswd = /^(?=.*[0-9])(?=.*[!@#$%^&*])[a-zA-Z0-9!@#$%^&*]{7,15}$/;
if (inputtxt.value.match(paswd)) {
alert('Correct, try another...')
return true;
} else {
alert('Wrong...!')
return false;
}
}
检查 8 到 15 个字符的密码,其中至少包含 1 个小写字母、1 个大写字母、1 个数字和 1 个特殊字符
function CheckPassword(inputtxt) {
var decimal = /^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9])(?!.*\s).{8,15}$/;
if (inputtxt.value.match(decimal)) {
alert('Correct, try another...')
return true;
} else {
alert('Wrong...!')
return false;
}
}
由于这一行,您的代码允许使用无效密码:
if (form.pwd1.value != "" && form.pwd1.value == form.pwd2.value)
if (!checkPassword(form.pwd1.value)) {
alert("Incorrect");
它基本上是在说:
这没有任何意义。 为什么您只想在密码不为空或两者相同时才验证密码? 这允许一个人输入无效密码并逃脱它,只要他们在 2 个密码框中输入不同的值,或者即使他们根本没有输入密码。
把上面的代码改成这样:
if (form.pwd1.value != form.pwd2.value || !checkPassword(form.pwd1.value || '')) {
alert("Incorrect");
如果用户尝试输入空白密码、两个密码不相等或其中一个密码未通过验证测试,这将显示错误消息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.