首先,我们来了解下按位或运算:将进行按位或运算的两个变量先转换为2进制,然后进行按位运算。
比如: 2|4
2对应的2进制 0010
4对应的2进制 0100
按位或运算 0110=6
这时,我们发现,转换为2进制后,对应的上下两位中,只要有1位为1,结果就是为1,这也是按位或运算的准则。而结果刚好是2+4=6。
这时,我们再来看看 6|2
6对应的2进制 0110
2对应的2进制 0010
按位或运算 0110=6
这时,我们发现,只要前面使用按位或运算过的数值(这里的2),再次使用其进行按位或运算时,结果不变(这里仍然为6)。利用这一特性,我们就可以实现密码强度值的运算
接下来我们需要用到正则表达式来校验输入的每一个字符,所以需要对正则表达式有一定了解:
匹配0-9的正则表达式 [0-9]
匹配小写字符的正则表达式 [a-z]
匹配大写字符的正则表达式 [A-Z]
有了这些正则表达式,我们就可以编写代码了,具体如下
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>密码强度</title> <style> .qiangdu{ height: 17px; width: 54px; background: gray; display: inline-block; font-size: 10px; text-align: center; } .active{ background: green; } </style> </head> <body> <div> <input type="text" id="pw"> <div class="qiangdu-box"> <div class="qiangdu">弱</div> <div class="qiangdu">中</div> <div class="qiangdu">强</div> </div> </div> </body> <script type="text/javascript" src="js/jquery-2.1.4.js" ></script> <script> $('#pw').on('keyup',function(){//添加键盘按键监听事件,当按键松开时做事 var value = $(this).val();//取出输入框的值 //当输入框未进行输入时清除所有密码强度显示 if(value == undefined || value == ''){ $(".qiangdu").removeClass("active"); return; } var weight = 0;//密码强度值默认是0 for(var i=0; i<value.length; i++){ var c = value.substring(i, i+1);//循环取出每一个字符 var reg1 = /[0-9]/;//正则表达式,匹配数字 var reg2 = /[a-z]/;//正则表达式,匹配小写字符 var reg3 = /[A-Z]/;//正则表达式,匹配大写字符 if(reg1.test(c)){ //进行按位或运算,如果下一个字符还是数字, //再与2进行按位或运算,就不会改变密码强 //度的值,后面的运算,原理一致 weight |= 2;//如果是数字,强度值+2 } else if(reg2.test(c)){ weight |= 4;//如果是小写字符,强度值+4 } else if(reg3.test(c)){ weight |= 8;//如果是大写字符,强度值+8 } else { weight |= 16;//如果是特殊字符,强度值+16 } } //强度值0-10为弱,10-20为中,>20为强 if(weight > 0 && weight <= 10){ //强度值为弱时,清除所有已激活的强度显示 $(".qiangdu").removeClass("active"); //将强度弱显示出来 $(".qiangdu:eq(0)").addClass("active"); } else if(weight > 10 && weight <= 20){ //强度值为中时,清除所有已激活的强度显示 $(".qiangdu").removeClass("active"); //将强度弱显示出来 $(".qiangdu:eq(0)").addClass("active"); //将强度中显示出来 $(".qiangdu:eq(1)").addClass("active"); } else { //强度值为中时,清除所有已激活的强度显示 $(".qiangdu").removeClass("active"); //将所有强度显示出来 $(".qiangdu").addClass("active"); } }); </script> </html> 代码注释很详细,这里就不多说,希望对大家有所帮助