function checkStrong(sPW){
    if(sPW.length==0){
        return -1;
    }
    if (sPW.match(/[0-9]/ig) ||  sPW.match(/[a-zA-Z]/ig)){
        return 1;
    }
    if (sPW.match(/[0-9]/ig) && sPW.match(/[a-zA-Z]/ig)){
        return 2;
    }判断密码强弱 
第一个if 判断如果输入的密码 是数字或者是字母其中之一 返回1(就是弱)
第二个判断 如果是字母,数字都有 返回2 (强)但为什么实际运行的时候 我输入的密码是 数字+字母 还是弱呢?如果想要实现  输入的数字或字母 之一 是弱
两者都有 是强 该怎么写呢

解决方案 »

  1.   

    换一下顺序看看
      if (sPW.match(/[0-9]/ig) && sPW.match(/[a-zA-Z]/ig)){
      return 2;
      }
      if (sPW.match(/[0-9]/ig) || sPW.match(/[a-zA-Z]/ig)){
      return 1;
      }
      

  2.   

    这是个包含关系啊function checkStrong(sPW){
      if(sPW.length==0){
      return -1;
      }
      if (sPW.match(/[0-9]/ig) && sPW.match(/[a-zA-Z]/ig)){
      return 2;
      }
      if (sPW.match(/[0-9]/ig)|sPW.match(/[a-zA-Z]/ig)){
      return 1;
      }这样吧 虽然不好 但是是对的
      

  3.   

    因为 如果第三个if能实现 那是不是在第二个if里已经为真了
    那么永远都倒不了第三步了
      

  4.   


    function checkStrong(sPW){
      if(sPW.length==0){
      return -1;
      }
      if (sPW.match(/[0-9]/ig) && sPW.match(/[a-zA-Z]/ig)){
      return 2;
      }
      if (sPW.match(/[0-9]/ig) || sPW.match(/[a-zA-Z]/ig)){
      return 1;
      }把if (sPW.match(/[0-9]/ig) && sPW.match(/[a-zA-Z]/ig))
    与if (sPW.match(/[0-9]/ig) || sPW.match(/[a-zA-Z]/ig))的位置换一下
      

  5.   

    那么就要判断其中有一个正确而另一个不正确

    var a = sPW.match(/[0-9]/ig)
    var b = sPW.match(/[a-zA-Z]/ig)if((a&&!b) || (!a&&b))
      

  6.   

    或者简单点
    if(sPW.match(/[0-9]/ig) ^ sPW.match(/[a-zA-Z]/ig))
      

  7.   

    你同时输入数字和字母,指定执行第二个if后return了,所以永远不会执行到第三个if了