密码验证的正则表达式

4

我想验证密码。以下是我的要求。

最小密码长度:8
最小小写字符数:1
最小大写字符数:1
最小数字字符数:1

如何编写正则表达式?


2
我的建议是使用一个名为 ValidatePassword 的函数。您可能需要更新它以包括(例如)密码不能包含用户名。只是一个想法。 :) - Russell
1
正则表达式不是这项工作的最佳工具。 - Jacob
@Jacob:通常这样的请求是因为一个人正在使用一些只允许使用正则表达式进行验证的框架。 - Gabe
3个回答

4
您可以使用以下正则表达式:
^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9]).{8,}$

1
我曾认为?=(零宽度正向先行断言)在一些常见的客户端语言中不被支持,但经过一番研究,我很高兴地发现我错了。这是要使用的正则表达式。 - neontapir

2

我同意@Russell的观点,函数是密码验证的更好选择。很难想象单一的正则表达式可以处理所有这些情况。我认为你需要逐个检查。

具体而言,正则表达式是:

  • .{8} 匹配至少8个字符
  • [a-z] 匹配一个小写字母
  • [A-Z] 匹配一个大写字母
  • [0-9] 匹配一个数字

话虽如此,这些仅适用于客户端检查,以便在服务器进行深入验证之前进行检查。


0
请查看下面的正则表达式以满足您的需求:
(?=^.{8}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$ 

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