我写了这个用于验证密码的JS代码,不能包含(!)char。
小提琴:http://jsfiddle.net/sr8xm/
var pattern = /[A-Za-z0-9.#&@_-]{6,20}/;
$("#pwd").blur(function(){
pwd = $(this).val();
if(!pattern.test(pwd)){
alert('Please enter valid new password.');
return false;
}
});
但如果有人输入,则返回true! 6个字符后的字符? 不知道这出了什么问题。
答案 0 :(得分:2)
锚定你的正则表达式:
var pattern = /^[A-Za-z0-9.#&@_-]{6,20}$ /;
您还可以将其缩小为:
var pattern = /^[\w.#&@-]{6,20}$/;
答案 1 :(得分:1)
/[A-Za-z0-9.#&@_-]{6,20}/
可以匹配密码字符串的中间部分。例如,它匹配“!mypassword!”并返回true。您可以使用^
(匹配字符串的开头)和$
(匹配字符串的结尾),例如/^[A-Za-z0-9.#&@_-]{6,20}$/
。
答案 2 :(得分:0)
如果要限制所选字符,可以使用另一个表达式来检查受限字符的存在。但锚定正则表达式也是你的问题的快速解决方案
var pattern = /[A-Za-z0-9.#&@_-]{6,20}/g;
var restrictedChar =/[!]+/g; // Add more character here which u want to restrict
var pwd = $("#pwd").val();
if(!pattern.test(pwd) || restrictedChar.test(pwd)){
alert('Please enter valid new password.');
return false;
}