首页 >> js开发 >> JavaScript原生js实现密码强度验证功能
JavaScript原生js实现密码强度验证功能
发布时间: 2021年1月13日 | 浏览:
| 分类:js开发
我们在填写表单的时候,特别是输入密码的时候,经常看到实时显示密码强度的效果,那么这种效果如何通过我们的原生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;
}
}
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;istrengh|=charMode(password.charCodeAt(i));
}
}
function checkPsw(password){
strengh=0;//定义一个全局变量用于检测密码强度
for(var i=0;istrengh|=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;
}
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
以上就是本文的全部内容,希望对大家的学习有所帮助。
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;
}
}
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
}
}
function checkPsw(password){
strengh=0;//定义一个全局变量用于检测密码强度
for(var i=0;i
}
}这里 |= 的意思是做相或运算,并赋值③创建一个函数,计算密码强度③创建一个函数,计算密码强度
function charStrengh(strengh){
var reference=0;
for(var i=0;i<4;i++){
if(strengh&1){
reference++;
}
strengh>>>=1;//无符号右移一位继续匹配
}
return reference;
}
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
以上就是本文的全部内容,希望对大家的学习有所帮助。
相关文章:
- JavaScript基于js实现判断浏览器类型代码实例
- js详细分析vue表单数据的绑定js大全
- jsVue移动端项目实现使用手机预览调试操作js大全
- js深入理解 ES6中的 Reflect用法js大全
- JavaScriptvuejs element table 表格添加行,修改,单独删除行,批量删除行操作
- js解决echarts图表使用v-show控制图表显示不全的问题js大全
- JavaScriptecharts.js 动态生成多个图表 使用vue封装组件操作
- jsvue-router为激活的路由设置样式操作js大全
- js完美解决vue 中多个echarts图表自适应的问题js大全
- js解决Vue @submit 提交后不刷新页面问题js大全