用于验证密码的正则表达式

3

我在这里寻找了一些想法,但仍然似乎难以想出满足我的要求的正则表达式。

我需要一个正则表达式来检查密码格式,标准如下:

  • 至少1个大写字母
  • 至少1个数字
  • 只能使用字母数字字符(不能使用特殊字符)
  • 至少8个字符长

我正在使用的正则表达式是:

^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$

然而,这也允许像!$&这样的字符。

我需要进行哪些修改才能使其停止接受这些特殊字符?

1个回答

8

将最后一部分.{8,}更改为[a-zA-Z\d]{8,}

 ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$

@M42为什么这个正则表达式:^(?=.*[\!\#\@\$\%\&\/\(\)\=\?\*\-\+\-\_\.\:\;\,\]\[\{\}])(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$不能允许特殊字符呢? - Jo Smo
@tastro: 你必须将最后一个 [a-zA-Z\d]{8,} 替换为 .{8,} - Toto
@M42谢谢,但它仍然不起作用。您能解释一下?=.*的含义吗?我知道a?允许一个a或根本没有a。只是不知道在等号(=)后面放一个问号(?)会发生什么。 - Jo Smo
@tastro:符号(?=.....)是正向前瞻。请参考http://www.regular-expressions.info/lookaround.html,但这在某些正则表达式中不起作用。如果您有更多问题,最好提出另一个问题,而不是在评论部分进行讨论 :-) - Toto
@M42完成:https://dev59.com/mrTps4cB2Jgan1znQh7a 再次感谢! - Jo Smo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接