请问怎么用正则表达式判断:
如果是字母或数字返回1,如果是字母或数字的组合返回2,如果是字母数字特殊字符的组合返回3
例如 :var str = ab123!@#$

解决方案 »

  1.   

    function test_s(s){
    var a=/^[a-zA-Z]+$/;
    var b=/^[0-9]+$/;
    var c=/^[0-9a-zA-Z]+$/;
    var d=/^[a-zA-Z0-9!@#$%\^&\*]+$/; var ret = 4;
    if(a.test(s) || b.test(s)){
    ret = 1;
    } else if(c.test(s)){
    ret = 2;
    } else if(d.test(s)){
    ret = 3;
    } return ret;
    }
      

  2.   

    密码简易程度function passwordGrade(password) {
        if (!password) return 0;
        if (/^\d+$/.test(password) || /^[a-z]+$/g.test(password)) return 1;
        if (/^[a-z\d]+$/g.test(password)) return 2;
        return 3;
    }var datas = ["", "123456", "abcdef", "abc123", "abc123#$%"];document.open();for (var i = 0; i < datas.length; i++) {
        document.write("\"" + datas[i] + "\"");
        document.write(" = ");
        document.write(passwordGrade(datas[i]));
        document.write("</br>");
    }document.close();
      

  3.   

    "" = 0
    "123456" = 1
    "abcdef" = 1
    "abc123" = 2
    "abc123#$%" = 3
      

  4.   

    function passwordGrade(password) {
        if (!password) return 0;
        if (/^\d+$/.test(password) || /^[a-z]+$/i.test(password)) return 1;
        if (/^[a-z\d]+$/i.test(password)) return 2;
        return 3;
    }
    忽略大小写g -> i
      

  5.   

    做了个简单例子,“组合”没有体现,也就是只有数字的话也会返回2的 <INPUT TYPE="text" NAME="inp"><INPUT TYPE="button" VALUE="test" ONCLICK="test()">
      <SCRIPT LANGUAGE="JavaScript">
      <!--
      function test(){
    var str = inp.value;
    var reg1 = /\W/; // \W 匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。 
      var reg2 = /\d/; // \d 匹配一个数字字符。等价于 [0-9]。 
    //var reg3 = /^[a-zA-Z]+$/; //纯字母串
    if ( reg1.test(str) ) //包含非单词字符
    {
    alert(3);
    }
    else if (reg2.test(str)) //包含数字
    {
    alert(2);
    }
    else
    {
    alert(1);
    }
      }
     //-->
      </SCRIPT>