验证密码的正则表达式(1个小写字母,1个大写字母,1个数字,无空格)

5

我正在尝试创建一个正则表达式,以满足以下标准:

  • 至少1个小写字母
  • 至少1个大写字母
  • 至少1个数字
  • 没有空格
  • 至少8个字符
  • 没有特殊字符

到目前为止,我得到了这个表达式;

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

然而我无法让它起作用。 任何帮助都将不胜感激。 我从来不擅长解谜 :)
1个回答

6
你已经接近成功了;只有结尾的.*才会忽略你的“不允许空格/特殊字符”的规则,而且(?=.\s)的先行断言是错误的(你可能意思是(?!.*\s)或者(?=\S*$))。
但其实你并不需要那个先行断言,因为你可以直接指定允许使用哪些字符(并在那里强制执行“至少8个字符”的规则)。
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[A-Za-z\d]{8,}$

但是为什么您要阻止用户在密码中使用非字母数字字符呢?


1
@user1595357:这是C#吗?如果是的话,那么这是首选的语法,因为它允许您使用反斜杠而无需转义它们。 - Tim Pietzcker
为什么?那个密码对于这个表达式是有效的吗? - user1595357
我明白了,你的措辞不太准确 @user1595357 - Rayshawn
@TimPietzcker,我在你的答案中添加了一点内容,问题的措辞让我感到困惑,但你的答案是有效的。 - Rayshawn
@TimPietzcker,密码是在ActiveDirectory中设置的,而AD中的PasswordPolicy属性不允许使用特殊字符。感谢您的帮助。 - user1595357

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