时间:2021-05-25
我们在填写表单的时候,特别是输入密码的时候,经常看到实时显示密码强度的效果,那么这种效果如何通过我们的原生js实现呢?
思路:
1.密码通常是由数字,大写字母,小写字母以及特殊字符组成
2.密码全部是纯数字或者纯大写字母,或者纯小写字母,我们认为是密码强度较低
3.密码由两种混合,我们认为密码强度是中等的
4.密码由三种或者四种混合,我们认为这样的密码组合强度很强
5.通过判断输入的密码每个字符,如果是数字返回1;如果是大写字母,返回2;如果是小写字母,返回4;如果是特殊字符,则返回8(至于为什么选择返返回这些数字请看第六条);
6.初始化一个体现密码强度的变量为0,在二进制下表示也就是0000,将他与我们的返回值进行二进制相或运算
7.比如初始值0000
与数字的返回值1(0001)相或运算,等于0001;
与一个小写字母和大写字母组成的密码相或就是0110;
与大写字母,小写字母,数字组成的密码相或就是0111;
与大写字母,小写字母,数字,特殊字符的密码相或就是1111;
8.将相或结果赋值给这个初始值,通过判断这个值在二进制下有多少个1,就能判断对应密码强度(用0001与这个值做相并计算,同时做无符号右移运算,即可获得1的个数)
以上就是我们的思路,那么我们就可以开始书写我们的代码
①创建一个函数,判断输入值的每一个字符由什么组成的
function charMode(char){ switch (true) { case (char>=48&&char<=57): return 1; break; case (char>=65&&char<=90): return 2; break; case (char>=97&&char<=122): return 4; break; default: return 8; break; } }这里也可以用if else 来做判断,只是没有switch看起来这么爽,同时这里注意,switch()括号里传入的不是输入值,而是一个true;因为case后面返回的是一个布尔值,判断的是布尔值之间是否相等(switch做全等比较,不进行类型转换)
②创建一个函数,用于判断整个输入串的密码强度类型
function checkPsw(password){ strengh=0;//定义一个全局变量用于检测密码强度 for(var i=0;i<password.length;i++){ strengh|=charMode(password.charCodeAt(i)); }}这里 |= 的意思是做相或运算,并赋值
③创建一个函数,计算密码强度
function charStrengh(strengh){ var reference=0; for(var i=0;i<4;i++){ if(strengh&1){ reference++; } strengh>>>=1;//无符号右移一位继续匹配 } return reference;}这里&1意思是与1(0001)做且运算,>>>=的意思是做无符号右移,比如0101无符号右移就是0010;再做一次无符号右移就是0001;
最后我们通过判断reference的数字就可以知道密码强度了,
再参考上一节的博客日志,实时验证输入内容,通过样式设置就可以达到密码强度实时验证效果了
总结:
在这里我们是通过判断键码来实现判断到底是数字还是大写字母还是小写字母,其实我们还可以使用强大的正则表达式来实现;
常用键码:
数字48-57
大写字母65-90
小写字母97-122
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例为大家分享了js实现密码输入强度验证的具体代码,供大家参考,具体内容如下需求:1.需要对用户输入的密码进行验证,验证的级别分为强中弱,如果输入的密码强度
本文实例讲述了JS基于正则表达式实现的密码强度验证功能。分享给大家供大家参考,具体如下:先来看看运行效果:具体代码如下:www.jb51.netbody{bac
前言:密码强度是一个很普遍的功能,比较简单,主要是怎么制定这个强度规则。现在需要升级密码强度的验证,以前的验证比较简单,现在已经不能满足需求了,现在需要可灵活变
验证“密码强度”的例子很常见,我们注册新的账号的时候往往设置密码,此时就遇到验证密码强度的问题了。“密码强度”也就是密码难易程度的意思。原理:1、如果输入的密码
正则表达式验证密码功能在项目中经常被使用到,但是很多朋友还是不大会使用密码正则表达式进行验证,本文小编为大家整理了php密码验证正则表达式、python密码强度