用js正则表达式判断用户登录信息并作判断显示错误提示,获取用户的username和用户密码password并在输入框下面隐藏提示,当用户输入的数字不符号特定条件时,显示提示错误并输入框变红色
1、效果如下
2、代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login Form</title>
<style>
.input-error {
border: 1px solid red;
}
</style>
</head>
<body>
<form id="loginForm">
<div>
<label for="username">账号:</label>
<input type="text" name="username" id="username" required>
<span class="error-message" id="username-error"></span>
</div>
<div>
<label for="password">密码:</label>
<input type="password" name="password" id="password" required>
<span class="error-message" id="password-error"></span>
</div>
<button type="submit">Login</button>
</form>
<script>
const form = document.querySelector('#loginForm');
const usernameInput = document.querySelector('#username');
const passwordInput = document.querySelector('#password');
// 校验用户名是否符合要求
function validateUsername() {
const username = usernameInput.value.trim();
const usernameError = document.querySelector('#username-error');
if (username.length < 6) {
usernameError.textContent = '账号长度必须大于6位';
usernameInput.classList.add('input-error');
return false;
} else {
usernameError.textContent = '';
usernameInput.classList.remove('input-error');
return true;
}
}
// 校验密码是否符合要求
function validatePassword() {
const password = passwordInput.value.trim();
const passwordError = document.querySelector('#password-error');
const passwordPattern = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$/;
if (!passwordPattern.test(password)) {
passwordError.textContent = '必须大于8位,且包含英文大小写';
passwordInput.classList.add('input-error');
return false;
} else {
passwordError.textContent = '';
passwordInput.classList.remove('input-error');
return true;
}
}
// 校验表单
function validateForm() {
const isValidUsername = validateUsername();
const isValidPassword = validatePassword();
return isValidUsername && isValidPassword;
}
// 监听表单的提交事件
form.addEventListener('submit', (event) => {
event.preventDefault();
if (validateForm()) {
// 表单校验通过,可以提交登录信息
console.log('Login successful!');
} else {
// 表单校验不通过,显示错误提示
console.log('Login failed!');
}
});
// 监听用户名输入框的变化
usernameInput.addEventListener('input', () => {
validateUsername();
});
// 监听密码输入框的变化
passwordInput.addEventListener('input', () => {
validatePassword();
});
</script>
</body>
</html>
以下是一个完整的 HTML 文件,包含了提到的表单和 JavaScript 代码:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8" />
<title>登录</title>
<style>
.error {
border: 1px solid red;
}
</style>
</head>
<body>
<h1>登录</h1>
<form>
<div>
<label>用户名:</label>
<input type="text" id="username" />
<span class="error" id="usernameError"></span>
</div>
<div>
<label>密码:</label>
<input type="password" id="password" />
<span class="error" id="passwordError"></span>
</div>
<button type="submit">登录</button>
</form>
<script>
const form = document.querySelector('form');
const username = document.querySelector('#username');
const password = document.querySelector('#password');
const usernameError = document.querySelector('#usernameError');
const passwordError = document.querySelector('#passwordError');
const USERNAME_PATTERN = /^[a-zA-Z0-9_]{1,20}$/;
const PASSWORD_PATTERN = /^[a-zA-Z0-9!@#$%^&*()_+=[\]{};':"\\|,.<>/?-]{6,20}$/;
// 绑定表单提交事件
form.addEventListener('submit', (event) => {
// 取消默认行为
event.preventDefault();
// 验证用户名是否合法
if (!USERNAME_PATTERN.test(username.value)) {
// 如果不合法,则显示错误信息
usernameError.textContent = '用户名必须为1-20位字母、数字或下划线';
// 并将输入框变红色
username.classList.add('error');
} else {
// 如果合法,则清空错误信息
usernameError.textContent = '';
// 并将输入框恢复原来的样式
username.classList.remove('error');
}
// 验证密码是否合法
if (!PASSWORD_PATTERN.test(password.value)) {
// 如果不合法,则显示错误信息
passwordError.textContent = '密码必须为6-20位字母、数字或特殊字符';
// 并将输入框变红色
password.classList.add('error');
} else {
// 如果合法,则清空错误信息
passwordError.textContent = '';
// 并将输入框恢复原来的样式
password.classList.remove('error');
}
});
</script>
</body>
</html>
你可以创建一个新的 HTML 文件,将上面的代码复制到文件中,并在浏览器中打开该文件来查看效果。
function validate() {
var username = document.getElementById("username").value;
var password = document.getElementById("password").value;
var username_prompt = document.getElementById("username_prompt");
var password_prompt = document.getElementById("password_prompt");
// 用户名 regex
var username_regex = /^[a-z0-9]{5,12}$/;
if(!username_regex.test(username)) {
username_prompt.textContent = "用户名必须是5-12位的字母数字组合!";
document.getElementById("username").style.borderColor = "red";
} else {
username_prompt.textContent = "";
document.getElementById("username").style.borderColor = "";
}
// 密码 regex
var password_regex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$/;
if(!password_regex.test(password)) {
password_prompt.textContent = "密码必须至少8位,包含大写字母、小写字母和数字!";
document.getElementById("password").style.borderColor = "red";
} else {
password_prompt.textContent = "";
document.getElementById("password").style.borderColor = "";
}
}
望采纳!