解决方案 »

  1.   

    ^(?=.{8,}) 开始位置后 至少8为任意字符
    接下来 以后必须分别能够匹配 大写字母 小写字母 数字的位置(?=.*\\W)  鉴于 \w 是匹配字母、数字、下划线,那么\W就是排除以上三种,该语句必须匹配出来以上三种的位置因此,该正则 首先匹配至少8为,然后 必须找到 大写字母,小写字母,数字,非(字母、数字、下划线)的位置格式为‘12345678Aa{’ 即为符合
      

  2.   

    var strongRegex = new RegExp("^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$", "g");
    alert(strongRegex.test('12a+3aA0')); //true首次看到这样的正则
    他表示的是:不少于8个字符,至少分别包含一个大写字母、小写字符、数字和符号
      

  3.   

    至少8个字符,且包括大小写字母数字和\还有大写的字母W,如aaaAa0\W你就可以通过验证,顺序可以改变\W9989abafda,但\W这两个要挨着写
    所以我觉得这个肯定不是你想要的。
      

  4.   

    这是我写的一个组件
    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>
      

  5.   

    ?= 预测先行断言 (Lookahead assertions)
      

  6.   

    果然如一楼所说,其实一开始我也猜到了,但是因为我这个代码是用在一个商城CMS系统里面,它在生成页面的时候已经进行了一次转义转换,所以最后生成的是
    var strongRegex = new RegExp("^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\W).*$", "g");
    也就奇妙的和4楼说的相符了,也正是因为4楼的解释,我才会想到应该是转义字符那里出问题了,感谢感谢各位