我要判断一个字符串,至少要有一个数字和一个小写字母和一个大写字母
这样的正则表达式如何写。谢谢。

解决方案 »

  1.   

    <script>
    var re1=/\d/;
    var re2=/[a-z]/;
    var re3=/[A-Z]/;
    //var str="2Adswe"
    var str="Adswe"
    if ((re1.test(str))&&(re2.test(str))&&(re3.test(str)))
    {
    alert("ok");
    }
    else
    {alert("no");}
    </script>
      

  2.   

    "\d+[a-z]+[A-Z]"
    不知这样写是否正确
      

  3.   

    function _0009(str)
    {
        return str.replace(/^(?:([a-z])|([A-Z])|(\d)|.)+$/g, "$1$2$3").length == 3;
    }alert(_0009("123asaDDdd"));
      

  4.   

    1条的话太长。。
    to夏天同学。。
    捕获加g后,执行完毕后,FF会释放$1-$n
      

  5.   

    // return str.replace(/^(?:([a-z])|([A-Z])|(\d)|.)+$/g, "$1$2$3").length == 3;
    // 效率要高一点,但是只能在IE中使用// 下面这个兼容FF和IE,但是效率低,小范围使用还可以
    function _0009(str)
    {
        return str.match(/[a-z](?![^a-z]*[a-z])|[A-Z](?![^A-Z]*[A-Z])|\d(?![^\d]*\d)/g).length == 3;
    }alert(_0009("123asadDDd"));
      

  6.   

    function test(str) {
    return /[0-9]/.test(str) && /[a-z]/.test(str) && /[A-Z]/.test(str);
    }
    alert(test(".a1bc1sdfsdfA"));
    推荐用3条。。
    1条也可以写。
    3的全排列是6种情况。。如果考虑还有[^\dA-za-z]的情况的话,会更长
    不推荐这个。。
      

  7.   

    回家后琢磨了一下,前面代码写的太难看了。
    用数组方法赋值比较好。一条表达式搞定
    <script>
    function test(str){
    var arr=new Array("\d","[a-z]","[A-Z]")
    for (var i=0;i<arr.length;i++)
    var re=new RegExp(""+arr[i]+"","g");
    return re.test(str)
    }
    alert(test("123ed"));
    alert(test("123edAD"));
    </script>