var strongRegex = new RegExp("^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$", "g"); alert(strongRegex.test('12a+3aA0')); //true首次看到这样的正则 他表示的是:不少于8个字符,至少分别包含一个大写字母、小写字符、数字和符号
果然如一楼所说,其实一开始我也猜到了,但是因为我这个代码是用在一个商城CMS系统里面,它在生成页面的时候已经进行了一次转义转换,所以最后生成的是 var strongRegex = new RegExp("^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\W).*$", "g"); 也就奇妙的和4楼说的相符了,也正是因为4楼的解释,我才会想到应该是转义字符那里出问题了,感谢感谢各位
接下来 以后必须分别能够匹配 大写字母 小写字母 数字的位置(?=.*\\W) 鉴于 \w 是匹配字母、数字、下划线,那么\W就是排除以上三种,该语句必须匹配出来以上三种的位置因此,该正则 首先匹配至少8为,然后 必须找到 大写字母,小写字母,数字,非(字母、数字、下划线)的位置格式为‘12345678Aa{’ 即为符合
alert(strongRegex.test('12a+3aA0')); //true首次看到这样的正则
他表示的是:不少于8个字符,至少分别包含一个大写字母、小写字符、数字和符号
所以我觉得这个肯定不是你想要的。
Demo地址:http://ucenter.b5m.com/widget/(这种是符合CMD规范的)function TestPassword(opt){
this.init(opt);
}(function(TestPassword){
TestPassword.init = function(opt){ }; /**
* 测试密码强度
* @param password 密码
* @param username 用户名
* @return
* 0:密码太短
* 1:较弱
* 2:弱
* 3:一般
* 4:强
*/ TestPassword.testPwd = function(password){
return checkStrong(password);
}; TestPassword.getDefaultHtml = function(password){
var code = this.testPwd(password);
if(code<= 1)
return '<p class="pwd-power pwd-weak"></p>';
if(code == 2 || code == 3)
return '<p class="pwd-power pwd-middle"></p>';
if(code == 4)
return '<p class="pwd-power pwd-strong"></p>';
}; //测试某个字符是属于哪一类.
function CharMode(iN){
if (iN>=48 && iN <=57) //数字
return 1;
if (iN>=65 && iN <=90) //大写字母
return 2;
if (iN>=97 && iN <=122) //小写
return 4;
else
return 8; //特殊字符
} //计算出当前密码当中一共有多少种模式
function bitTotal(num){
var modes=0;
for(var i=0;i<4;i++){
if (num & 1) modes++;
num>>>=1;
}
return modes;
} //返回密码的强度级别
function checkStrong(sPW){
if (sPW.length<=4)
return 0; //密码太短
Modes=0;
for(var i=0;i<sPW.length;i++){
//测试每一个字符的类别并统计一共有多少种模式.
Modes|=CharMode(sPW.charCodeAt(i));
}
return bitTotal(Modes);
}
})(TestPassword.prototype);这是调用<input id="mmqd" type="text"><span><p class="pwd-power pwd-weak"></p></span>
<script type="text/javascript">
$(function(){
var testPwd = new TestPassword();
$('#mmqd').keyup(function(){
$(this).parent().find('span').empty().append(testPwd.getDefaultHtml($(this).val()));
});
});
</script>
var strongRegex = new RegExp("^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\W).*$", "g");
也就奇妙的和4楼说的相符了,也正是因为4楼的解释,我才会想到应该是转义字符那里出问题了,感谢感谢各位