✅ 以下4个正则表达式模式可以帮助您编写几乎所有的密码验证
模式1:
密码必须包含1到9之间的一个数字、一个小写字母、一个大写字母、一种特殊字符、无空格,并且长度必须为8-16个字符。
/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*\W)(?!.* ).{8,16}$/
说明:
(?=.*[0-9])表示密码必须包含一个从1到9的数字。
(?=.*[a-z])表示密码必须包含一个小写字母。
(?=.*[A-Z])表示密码必须包含一个大写字母。
(?=.*\W)表示密码必须包含一个特殊字符。
.{8,16}表示密码长度必须为8-16个字符。我们必须在正则表达式的末尾,就在$符号之前使用它。
什么是^和$:
^表示字符串的开头。$表示字符串的结尾。
如果不使用这些^&$,正则表达式将无法确定密码的最大长度。在上面的示例中,我们有一个条件,即密码不能超过16个字符,为了使该条件有效,我们使用了这些^&$
删除最大长度限制:
而不是{8,16},如果我们使用。{8,},这意味着密码长度必须至少为8个字符。因此,不存在检查密码最大长度的任何条件。
不接受任何数字(数字):
如果使用(?!.*[0-9])而不是(?=.*[0-10]),则意味着密码不能包含1-9之间的任何数字(与(?=.*[0-0])的区别是使用!而不是=)
不接受任何特殊字符:
如果我们使用(?!.*\W)而不是(?=.*\W),则意味着密码不能包含任何特殊字符(与(?=.*\W的区别在于使用!而不是=)
数字(数字)的替代语法:
我们可以使用(?=.*\d)代替(?=.*\d)。(?=..*\d)也意味着密码必须包含1到9之间的一个数字。
模式2:
密码必须包含1到9之间的一个数字、一个小写字母、一个大写字母、一条下划线,但不能包含其他特殊字符、空格,并且长度必须为8-16个字符。
/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*_)(?!.*\W)(?!.* ).{8,16}$/
与模式1的区别
这里,我们使用了模式1中没有的(?=.*_)。
(?=.*_)(?!.*\W)表示密码必须包含下划线,但不能包含任何其他特殊字符。
模式3:
密码必须包含1到9之间的一个数字、一个小写字母、一个大写字母、一条下划线、无空格,并且长度必须为8-16个字符。除下划线外,任何其他特殊字符的使用都是可选的。
/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*_)(?!.* ).{8,16}$/
与模式2的区别
这里,我们没有使用(?!.*\W)模式2上的内容。
但它仍然具有(?=.*_)
通过删除(?!.*\W),特殊字符已成为可选字符。现在,需要一个下划线,但可以使用或不使用任何其他特殊字符,因为它是可选的。
模式4:
密码必须包含1到9之间的一个数字、一个小写字母、一个大写字母和一个下划线,并且长度必须为8-16个字符。任何其他特殊字符的使用和空格的使用都是可选的。
/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{8,16}$/
与模式3的区别
这里,我们没有使用模式3中的(?=.*_)&(?!.*)。
通过删除(?=.*_),不再强制传递一个下划线。现在,传递特殊字符是可选的。
通过删除(?!.*),空间的使用也变得可选。