像专业人士一样编写用于密码验证的正则表达式模式
✅The following 4 regex patterns can help you to write almost any password validation
模式 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-9])
,则意味着密码不能包含 1-9 之间的任何数字(与 的区别(?=.*[0-9])
在于使用!
而不是=
)
不接受任何特殊字符:
(?=.*\W)
如果我们使用而不是(?!.*\W)
,则意味着密码不能包含任何特殊字符(与 的区别(?=.*\W)
在于使用!
而不是=
)
数字(数字)的替代语法:
(?=.*[0-9])
我们可以使用 ,而不是(?=.*\d)
。(?=.*\d)
这也意味着密码必须包含从 1 到 9 的单个数字。
模式2:
密码必须包含 1 至 9 之间的一位数字、一个小写字母、一个大写字母、一个下划线(但不能包含其他特殊字符)、不能包含空格,且长度必须为 8-16 个字符。
/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*_)(?!.*\W)(?!.* ).{8,16}$/
与模式 1 的区别
- 在这里,我们使用了
(?=.*_)
上没有的Pattern 1
。
(?=.*_)(?!.*\W)
表示密码必须包含下划线,但不能包含任何其他特殊字符。
模式3:
密码必须包含 1 到 9 之间的一位数字、一个小写字母、一个大写字母、一个下划线,且不能包含空格,且长度必须为 8-16 个字符。除下划线外,其他特殊字符均可选择使用。
/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*_)(?!.* ).{8,16}$/
与模式2的区别
- 这里,我们没有使用
(?!.*\W)
上的内容Pattern 2
。
- 但它仍然
(?=.*_)
- 只需删除
(?!.*\W)
,特殊字符就变成可选的了。现在,一个下划线是必需的,但其他任何特殊字符都可以使用或不使用,因为它是可选的。
模式4:
密码必须包含 1 至 9 之间的一位数字、一个小写字母、一个大写字母和一个下划线,长度为 8-16 个字符。其他特殊字符和空格的使用是可选的。
/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{8,16}$/
与模式3的区别
- 这里我们没有使用位于 上的
(?=.*_)
& 。(?!.* )
Pattern 3
- 删除 后
(?=.*_)
,不再强制传递一个下划线。现在,传递特殊字符是可选的。
- 通过删除
(?!.* )
,空间的使用也变得可选。
就这样。😃 感谢阅读。🎉
鏂囩珷鏉ユ簮锛�https://dev.to/rasaf_ibrahim/write-regex-password-validation-like-a-pro-5175