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}。
本文介绍了如何使用JavaScript正则表达式进行密码复杂度校验,包括必须包含大写字母、小写字母、数字、特殊字符或下划线,并且密码长度在8到32个字符之间。
8600

被折叠的 条评论
为什么被折叠?



