测试密码强度

来源:互联网 发布:韩国经济数据 编辑:程序博客网 时间:2024/05/02 02:46


<html>

<!--激情在最后面,请看最后面红色字


 这是是个计算密码强度的实例

                网上有很多这样的例子

               不过呢,都不怎么好

                这是我写的一个完整的效果,可以通用,

                new一下就可以实例化一个【关注重点】,

                主要是用面向对象来写,感觉知道做下笔记

              密码强度验证规则如下:




-->

 <meta charset="UTF-8">
    <title>计算密码强度</title>
  <head></head>
  <style>
   span{
    display: inline-block;
    line-height: 20px;
    text-align: center;
    width:20px;
    height:20px;
    border-radius: 50%;
    background:#ccc;
    font-size: 12px;
    color:#fff;
   }
   .current{
    background:green;
    color:#000;
   }
  </style>
<script src="jquery.js"></script>
  <body>
    <input type="text" id="test" class="input1">
    <input type="submit" value="submit" id="submit"/>
    <div class="vaild">
    <span>弱</span>
    <span>中</span>
    <span>强</span>
    </div>


     <input type="text" id="test" class="input2">
      <input type="submit" value="submit" id="submit"/>
    <div class="vaild2">
   <span>弱</span>
   <span>中</span>
   <span>强</span>
    </div>
    <script>
    //构造函数
    function Vaild(){
        this.input=$(".input1"),
    this.show=$(".vaild span"),
    this.name="current",
    this.vailded=function()
    {
    var _this=this;
    this.input.on("keyup", function()
    {
    // var div=$("#fen");
     //var tips=$("#tips");
     var f=0;//每次都清空
     var vals=$(this).val();
     //数组
     var num;
     var en;
     var fh;
     var jl;
     //得分
      var lenF;
     var numF;
     var enF;
     var fhF;
     var jlF;
     //判断长度
     if(vals.length>0&&vals.length <=4){
         lenF=5;
     }
     else if(vals.length>4&&vals.length<=7){
         lenF=10;
     }
     else if(vals.length>=8){
       lenF=25;
     }
     //判断数字
    num=vals.match(/\d/g)?vals.match(/\d/g):0;
    if(num==0){
     numF=0;
    }
    else if(num.length==1){
     numF=10;
    }
    else if(num.length>=2){
     numF=20;
    }
    //判断字母长度
     en=vals.match(/[A-Za-z_]/g)?vals.match(/[A-Za-z_]/g):0;
    if(en==0){
     enF=0;
    }
    else if(en.length==1){
     enF=10;
    }
    else if(en.length>=2){
     enF=20;
    }
   //匹配符号
    fh=vals.match(/\W/g)?vals.match(/\W/g):0;
    if(fh==0){
     fhF=0;
    }
    else if(fh.length==1){
     fhF=10;
    }
    else if(fh.length>=2){
     fhF=25;
    }
    //奖励
    if(/\d+/g.test(vals)&&/[a-z_]+/g.test(vals)){
     jlF=2;
    }
    if(/\d+/g.test(vals)&&/[a-z_]+/g.test(vals)&&/\W+/g.test(vals)){
     jlF=3;
    }
    if(/\d+/g.test(vals)&&/[A-Z]+/g.test(vals)&&/[a-z_]+/g&&/\W+/g.test(vals)){
     jlF=5;
    }
    if(jlF==undefined||jlF=="NaN"||jlF=="undefined")
    {
     jlF=0;
    }
    var count=Number(lenF)+Number(numF)+Number(enF)+Number(fhF)+Number(jlF);
    //切换“弱” “中” “强”
     if(count>=0&&count<60){
       _this.show.eq(0).addClass(_this.name).siblings().removeClass(_this.name);
     }
     else if(count<90&&count>=60){
            _this.show.eq(2).removeClass(_this.name).siblings().addClass(_this.name);
     }
     else if(count>90){
        _this.show.addClass(_this.name);
     }
     else{
      _this.show.removeClass(_this.name);
     }
     //显示分数
    // div.html("分数 : "+ count)
     //测试多对应的所得分数
     console.log("长度分数:"+lenF)
     console.log("数字分数:"+numF)
     console.log("字母分数: "+enF)
     console.log("符号分数: "+fhF)
     console.log("奖励分数: "+jlF)

   })


    }

    };

///实例化构造函数

    var dd=new Vaild();
    dd.vailded();
   
   //开启第二个
   var bb=new Vaild();
   bb.input=$(".input2");
   bb.show=$(".vaild2 span");
   bb.vailded();

  
    </script>
  </body>
</html>
2 0
原创粉丝点击