使用setCustomValidity在javascript中进行正则表达式验证

时间:2017-02-28 06:27:50

标签: javascript



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;
&#13;
&#13;

我正在尝试进行表单验证,其中Login必须至少有5个字符且不超过12个,而Password必须至少有6个字符,至少不超过16个。至少有一个低号和一个号码。

正则表达式是正确的,但它无法正常使用javascript。我无法找到我正在做的错误。

感谢。

1 个答案:

答案 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}$");