前言
记录一下js正则密码要求匹配方法。
正文
下方正则共包括四种筛选,可以根据需要去除对应括号内容即可:
- (?=.{12})表示要大等于12位。
- (?=.*?[a-z])表示要有小写字母。
- (?=.*?[A-Z])表示要有大写字母。
- (?=.*?\d)表示要有数字。
- (?=.?[?!&¥$%^#,./@";:><[]}{-=+_\|》《。,、?’‘“”~ `])表示要有特殊字符。
const password = 'Cc1239999***'
const check = /^(?=.{12})(?=.*?[a-z])(?=.*?[A-Z])(?=.*?\d)(?=.*?[*?!&¥$%^#,./@";:><\[\]}{\-=+_\\|》《。,、?'‘“”~ `]).*$/;
if (check.test(password)) {
console.log('ok')
} else {
console.log('false')
}
补充:js正则表达式验证密码强度,必须包含数字,大写字母,小写字母,特殊字符四选三。验证数字,大写字母,小写字母,特殊字符四选三组成的密码强度,且长度在8到30个数之间
表达式:
^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W_!@#$%^&*`~()-+=]+$)(?![a-z0-9]+$)(?![a-z\W_!@#$%^&*`~()-+=]+$)(?![0-9\W_!@#$%^&*`~()-+=]+$)[a-zA-Z0-9\W_!@#$%^&*`~()-+=]{8,30}$
js写法:
var regex = new RegExp('^(?![a-zA-Z]+$)(?![A-Z0-9]+$)(?![A-Z\W_!@#$%^&*`~()-+=]+$)(?![a-z0-9]+$)(?![a-z\W_!@#$%^&*`~()-+=]+$)(?![0-9\W_!@#$%^&*`~()-+=]+$)[a-zA-Z0-9\W_!@#$%^&*`~()-+=]{8,30}$');
if(!regex.test(pwd)){
msgError("输入错误:密码不符合规则,请重新输入。");
$("#password").focus();
return;
}
解析:
- [a-zA-Z0-9\W_!@#$%^&*`~()-+=]{8,30}表示四种的全部匹配的表达式
- \w 是匹配任意不是字母,数字,下划线,汉字的字符,这里因为有些特殊字符匹配不了我添加了其他特殊字符!@#$%^&*`~()-+=
- 然后使用排除法,排除其中只选一种或只选两种的情况,剩下的就是选了三种的情况了。
- (?![a-zA-Z]+$)表示排除小写字母和大写字母的匹配以此类推排除其他情况就得到最终表达式
转载原文:js密码强度校验