js密码正则表达式:要求包含大小写字母、数字和特殊符号,8~16位
展开全部
var v=$("#text").val();
reg=/^(?![0-9]+$)(?![a-z]+$)(?![A-Z]+$)(?!([^(0-9a-zA-Z)])+$)^.{8,16}$/;
alert(reg.test(v));
上面这个正则表示的是不能为纯数字,不能为纯字母,不能为纯特殊符号,综合起来就是必须为数字 字母 特殊符号中最少两种,如果你要求必须包含三种的话,就接着往上加就行:
(?![0-9]+$) 这句意思是设定后面不能为纯数字
(?![a-z]+$) 这句意思是设定后面不能为纯小写字母
。。。
照着这个格式我们继续写:
(?![0-9a-z]+$) 不能为小写字母与数字
(?![0-9A-Z]+$) 不能为大写字母与数字
(?![0-9a-zA-Z]+$) 不能为大写,小写字母与数字
把这三个也加上去,就只剩一种情况了,就是必须四种都包含
可以看这篇文章,写得很详细,还有在线实例:
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
function validateInput(obj) {
var str = obj.value;
var regUpper = /[A-Z]/;
var regLower = /[a-z]/;
var regStr = /[^A-Za-z0-9]/;
var complex = 0;
if (regLower.test(str)) {
++complex;
}
if (regUpper.test(str)) {
++complex;
}
if (regStr.test(str)) {
++complex;
}
if (complex < 3 || str.length < 8) {
alert("包含大小写字母,数字,特殊字符,长度至少8位");
} else {
alert("成功");
}
}
//参考,可以分别分解开来匹配,如果输入是小写字符,累计+1,如果输入大写字符+1,如果输//入非大、小写字符以及数字认为是特殊字符+1,只有累计等于3时并且长度大于8才符合要求,否//则验证失败
var str = obj.value;
var regUpper = /[A-Z]/;
var regLower = /[a-z]/;
var regStr = /[^A-Za-z0-9]/;
var complex = 0;
if (regLower.test(str)) {
++complex;
}
if (regUpper.test(str)) {
++complex;
}
if (regStr.test(str)) {
++complex;
}
if (complex < 3 || str.length < 8) {
alert("包含大小写字母,数字,特殊字符,长度至少8位");
} else {
alert("成功");
}
}
//参考,可以分别分解开来匹配,如果输入是小写字符,累计+1,如果输入大写字符+1,如果输//入非大、小写字符以及数字认为是特殊字符+1,只有累计等于3时并且长度大于8才符合要求,否//则验证失败
追问
你的思路很好,为什么不能弄成一个表达式呢
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询