像专业人士一样编写用于密码验证的正则表达式模式

2025-06-10

像专业人士一样编写用于密码验证的正则表达式模式

✅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}$/
Enter fullscreen mode Exit fullscreen mode

 

解释:

 

  • (?=.*[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}$/

Enter fullscreen mode Exit fullscreen mode

 

与模式 1 的区别

 

  • 在这里,我们使用了(?=.*_)上没有的Pattern 1

 

  • (?=.*_)(?!.*\W)表示密码必须包含下划线,但不能包含任何其他特殊字符。

 

模式3:

 

密码必须包含 1 到 9 之间的一位数字、一个小写字母、一个大写字母、一个下划线,且不能包含空格,且长度必须为 8-16 个字符。除下划线外,其他特殊字符均可选择使用。

/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*_)(?!.* ).{8,16}$/
Enter fullscreen mode Exit fullscreen mode

 

与模式2的区别

 

  • 这里,我们没有使用(?!.*\W)上的内容Pattern 2

 

  • 但它仍然(?=.*_)

 

  • 只需删除(?!.*\W),特殊字符就变成可选的了。现在,一个下划线是必需的,但其他任何特殊字符都可以使用或不使用,因为它是可选的。

 

模式4:

 

密码必须包含 1 至 9 之间的一位数字、一个小写字母、一个大写字母和一个下划线,长度为 8-16 个字符。其他特殊字符和空格的使用是可选的。

/^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).{8,16}$/
Enter fullscreen mode Exit fullscreen mode

 

与模式3的区别

 

  • 这里我们没有使用位于 上的(?=.*_)& (?!.* )Pattern 3

 

  • 删除 后(?=.*_),不再强制传递一个下划线。现在,传递特殊字符是可选的。

 

  • 通过删除(?!.* ),空间的使用也变得可选。

 

就这样。😃 感谢阅读。🎉

鏂囩珷鏉ユ簮锛�https://dev.to/rasaf_ibrahim/write-regex-password-validation-like-a-pro-5175
PREV
防止滚动条导致的布局偏移
NEXT
放弃 useState 和 useReducer:为什么 useImmer 是更好的选择