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]+$) 不能为大写,小写字母与数字
把这三个也加上去,就只剩一种情况了,就是必须四种都包含
可以看这篇文章,写得很详细,还有在线实例: