密码复杂度校验,JS 正则同时验证 大写字母,小写字母,数字,特殊字符

const regex = /(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[\W])(?=.*[\S])^[0-9A-Za-z\S]{6,12}$/g;
const password = `A123@abc`;
console.log(regex.test(password))

表达式解释:

在正则表达式中,\W 是一个特殊字符类,用于匹配任意非单词字符(非字母、非数字、非下划线)。

具体来说,\W 表示匹配以下字符之一:

  • 除了字母(A-Z 和 a-z)
  • 除了数字(0-9)
  • 除了下划线(_)

换句话说,\W 匹配任何非单词字符。这个不包含下划线的,ZhangSan_01 校验会不通过。

 表达式中这个6-12表示字符串长度,是可以修改成需要的位数。

^[0-9A-Za-z\S] 这个表达式是一个正则表达式,用于匹配一个字符的模式。在这个表达式中,它表示匹配一个字符,该字符可以是数字(0-9)、大写字母(A-Z)、小写字母(a-z)或者非空白字符(\S)。

更详细地解释该表达式的含义:

- ^ 表示匹配字符串的开头。
- [0-9A-Za-z\S] 表示一个字符集,匹配包含数字、大写字母、小写字母和非空白字符的任意一个字符。
  - 0-9 表示数字范围 0 到 9。
  - A-Z 表示大写字母范围 A 到 Z。
  - a-z 表示小写字母范围 a 到 z。
  - \S 表示任意非空白字符。

因此,该表达式的意思是匹配一个字符,该字符既可以是数字、大写字母、小写字母,也可以是任意非空白字符。

优化后的表达式,少了 ^[0-9A-Za-z\S] 部分,[\W]更改为[\W_]

下面这个正则也适用密码强度校验

const regex = /(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[\W_])(?=.*[\S]).{8,32}$/;
const password = 'ZhangSan_01';

console.log(regex.test(password));//输出 true

这个正则表达式要求密码满足以下条件:

  • 至少包含一个数字 (?=.*[0-9])
  • 至少包含一个大写字母 (?=.*[A-Z])
  • 至少包含一个小写字母 (?=.*[a-z])
  • 至少包含一个特殊字符或下划线 (?=.*[\W_])
  • 至少包含一个非空格字符 (?=.*[\S])
  • 密码长度为8到32个字符 {8,32}

参考:https://segmentfault.com/a/1190000020270350?sort=votes

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值