var ck_login = new RegExp("/^[a-zA-Z]{5,12}$/");
var ck_password = new RegExp("/^(?=.*\d)(?=.*[a-z]).{6,16}$/");
function validate(){
var login = document.getElementById("login").value;
var loginErr = document.getElementById("login");
var password = document.getElementById("password").value;
var passwordErr = document.getElementById("password");
if (ck_password.test(password) == false) {
passwordErr.setCustomValidity('Password must have at least 6 characters at least no more than 16. At least one low and one number');
return false;
}
if (ck_login.test(login) == false) {
loginErr.setCustomValidity('Login must have at least 5 characters and no more than 12');
return false;
}
return true;
}

<form action="" method="post" onSubmit="return validate();">
<label>Username:</label>
<input type="text" name="login" id="login" required="required">
<label>Password:</label>
<input type="text" name="password" id="password" required="required">
<input type="submit">
</form>
&#13;
我正在尝试进行表单验证,其中Login必须至少有5个字符且不超过12个,而Password必须至少有6个字符,至少不超过16个。至少有一个低号和一个号码。
正则表达式是正确的,但它无法正常使用javascript。我无法找到我正在做的错误。
感谢。
答案 0 :(得分:0)
不要使用RegExp构造函数创建正则表达式。
这样做:
var ck_login = /^[a-zA-Z]{5,12}$/;
var ck_password = /^(?=.*\d)(?=.*[a-z]).{6,16}$/;
如果您打算使用RegExp构造函数,请不要在字符串的开头使用斜杠。
var ck_login = new RegExp("^[a-zA-Z]{5,12}$");
var ck_password = new RegExp("^(?=.*\d)(?=.*[a-z]).{6,16}$");