簡體   English   中英

使用setCustomValidity在javascript中進行正則表達式驗證

[英]Regex validation in javascript with setCustomValidity

 var ck_login = new RegExp("/^[a-zA-Z]{5,12}$/"); var ck_password = new RegExp("/^(?=.*\\d)(?=.*[az]).{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> 

我正在嘗試進行表單驗證,其中Login必須至少有5個字符且不超過12個,而Password必須至少有6個字符,至少不超過16個。至少有一個低和一個數字。

正則表達式是正確的,但它不能正常使用javascript。 我找不到我在做什么錯。

謝謝。

不要使用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}$");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM