js校验密码强度,包括数字,特殊字符,大小写字母

文章介绍了如何使用JavaScript正则表达式来验证密码的复杂度,包括必须包含的元素:数字、大写字母、小写字母和特殊字符,并提供了相应的正则匹配方法。示例代码展示了如何检查密码是否满足至少包含这四类中的三种,且长度在8到30个字符之间的规则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

记录一下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密码强度校验

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值