密码等级:至少包含字母、大小写数字、字符中的两种 JS实现方案

前言

密码,如果设置的太简单,很容易就被攻破,所以很多网站将密码设置的要求设置的挺严格,一般是字母、数字、字符3选2,区分大小写。对于设置得太简单的密码,予以错误提示。或者予以密码等级(低中高)显示,让用户设置高级密码。那如何利用JS实现呢?

代码

链接:https://gist.github.com/xuanfeng/a44f20cb4569d5b4cd5e

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

function passwordLevel(password) {

var Modes = 0;

for (i = 0; i < password.length; i++) {

Modes |= CharMode(password.charCodeAt(i));

}

return bitTotal(Modes);

//CharMode函数

function CharMode(iN) {

if (iN >= 48 && iN <= 57)//数字

return 1;

if (iN >= 65 && iN <= 90) //大写字母

return 2;

if ((iN >= 97 && iN <= 122) || (iN >= 65 && iN <= 90)) //大小写

return 4;

else

return 8; //特殊字符

}

//bitTotal函数

function bitTotal(num) {

modes = 0;

for (i = 0; i < 4; i++) {

if (num & 1) modes++;

num >>>= 1;

}

return modes;

}

}

使用

普通使用

使用语法:passwordLevel(string)

验证规则:数字、大写字母、小写字母、特殊字符

函数结果:返回密码中包含的规则数

运行例子:

1

2

passwordLevel("123456")           //返回1

passwordLevel("Abc‘123456")    //返回4

结合jquery.validate.js使用

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

// 添加验证方法:至少包含两种规则

$.validator.addMethod("strongPsw", function(value, element) {

if(passwordLevel(value) == 1){return false;}

return true

}, "格式不符合");

// 开始验证

$(".form").validate({

rules: {

pwd: {

required: true,        //必填

minlength: 6,        //最小长度

maxlength: 32,        //最大长度

strongPsw: true,    //密码强度

},

repwd: {

required: true,

minlength: 6,

maxlength: 32,

equalTo: "#pwd"        //再次填写密码需一致

}

}

});

时间: 2025-01-12 10:20:22

密码等级:至少包含字母、大小写数字、字符中的两种 JS实现方案的相关文章

正则检验密码长度6-20位,且至少带字母、数字、符号中的两种。

let pwd = '123456' let reg = new RegExp(/^(?[\d]+$)(?[a-zA-Z]+$)(?![^\da-zA-Z]+$).{6,20}$/); //6-20位,至少带字母数字符号中的两种的正则 let result = reg.test(pwd); if(!result){ //do something //不通过的 } 原文地址:https://www.cnblogs.com/hukuangjie/p/12303000.html

【JS】JS校验密码复杂度(必须包含字母、数字、特殊符号)

#场景一:密码中必须包含大小写 字母.数字.特称字符,至少8个字符,最多30个字符: 1 var pwdRegex = new RegExp('(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[^a-zA-Z0-9]).{8,30}'); 2 3 if (!pwdRegex.test('[email protected]')) { 4 alert("您的密码复杂度太低(密码中必须包含大小写字母.数字.特殊字符),请及时修改密码!"); 5 } #场景二:密码

php 正则匹配包含字母、数字以及下划线,且至少包含2种

新系统注册功能需对用户名和密码做以下要求:包含字母.数字以及下划线,且至少包含2种: 在网上没有搜到符合要求的代码,于是自己对他人代码做了一点修改,经测试满足要求.代码如下: if (!preg_match('/^(?![0-9]+$)(?![_]+$)(?![a-zA-Z]+$)[A-Za-z_0-9]{1,}$/',$string)) { return ['result' => false, 'msg' => '只能包含字母.数字以及下划线,且至少包含2种']; } 原文地址:https:

php正则匹配用户名必须包含字母和数字且大于6位

php正则匹配用户名必须包含字母和数字且大于6位 UEditor 1.4.3版本中去掉本地自动保存功能 右键菜单没有新建文本文档txt 常见HTTP错误代码大全 http常见状态码 eclipse内存溢出错误 为什么井盖是圆的?--揭开面试题的神秘面目! Linux Centos 6.6搭建SFTP服务器 密码强度检测 JS判断检测用户输入密码强度代码 对程序员来说,提高薪水最好的建议是什么? CSS3仿淘宝右侧固定导航悬浮层 jQuery仿淘宝网登录拖动滑块验证码代码 jQuery单击div更

【代码笔记】判断中英文混合的字符长度的两种方法

一,代码. - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. //第一种方法 NSLog(@"--first-%i",[self convertToInt:@"123我爱你"]); //第二种方法 NSLog(@"--second--%ld",[self getToInt:@"123我爱你"

SpringMVC配置字符过滤器的两种方式

有时候使用SpringMVC框架提交表单时会出现中文乱码,以下是我亲自试验过的配置字符过滤器的两种: 1.在web.xml中配置 <filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>orgspringframeworkwebfilterCharacterEncodingFilter</filter-class> <init-param> &

validate插件:验证密码没有空格 用户名是5-10位 至少包含数字和大小写字母中的两种字符

//校验密码是否含有空格 jQuery.validator.addMethod("notblank", function(value, element) { var pwdblank = /^\S*$/; return this.optional(element) ||(pwdblank.test(value)); }, "密码不可包含空格"); //用户名必须需包含数字和大小写字母中至少两种 jQuery.validator.addMethod("use

字符串中包含任意几个字符中的至少一个

if (CharMatcher.anyOf("_").matchesAnyOf(rolename)) { log.error("rolename cannot contains '_':" + rolename); throw new SQLException(new ErrorVO(ErrorCode.ROLENAME_REG_ERROR)); } CharMatcher.anyOf("_").matchesAnyOf(rolename) 即r

PHP数字补零的两种方法

在php中有两个函数——至少有两个是否有其他的我还不知道,能够实现数字补零,str_pad(),sprintf()详细如下 str_pad 顾名思义这个函数是针对字符串来说的这个可以对指定的字符串填补任何其它的字符串 例如:str_pad(带填补的字符串,填补后的长度,填补字符串,填补位置) 其中填补后的长度必须是个正整数,填补位置有三个选项, 左边:STR_PAD_LEFT, 右边:STR_PAD_RIGHT, 两端:STR_PAD_BOTH 例如: echo str_pad(1,8,”0″,