繁体   English   中英

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

[英]writing regular expression for password validation

我正在研究输入卫生,并想编写用于密码验证的正则表达式。 我使用OWASP ESAPI来验证输入参数,但是我不能这样做,因为ESAPI提供的用于密码验证的正则表达式不能满足所有条件。

•8-20个字符,使用字母和数字

•不能包含3个或更多连续的相同字母,数字或特殊字符

•不能包含空格

可选的:

•一个或多个特殊字符,“&'⁄ <> [\\] {| }〜^!

• 区分大小写

PWASP ESAPI正则表达式- ![CDATA[^(?:(?=.*\\d)(?=.*[AZ])(?=.*[az])|(?=.*\\d)(?=.*[^A-Za-z0-9])(?=.*[az])|(?=.*[^A-Za-z0-9])(?=.*[AZ])(?=.*[az])|(?=.*\\d)(?=.*[AZ])(?=.*[^A-Za-z0-9]))(?!.*(.)\\1{2,})[A-Za-z0-9!~<>,;:_=?*+#."&§%°()\\|\\[\\]\\-\\$\\^\\@\\/]{8,32}$]]

我试图对其进行修改,但是我没有得到预期的结果,因为我以前从未使用过它们,所以我对regex并不超级知己。 我如何创建一个可以包含所有条件的正则表达式?

谢谢

我建议您不要为此使用RegEx,因为它编写起来很繁琐,而维护起来更繁琐。

最好是寻找一个允许您传递配置的库(类似于passay )。

如果您不希望这样做,则应使用通用的字符串函数来检查长度( str.length() ,以及数字和特殊字符的存在(例如str.matches() )。

它不仅易于维护,而且速度更快,因为非常复杂的RegEx查询会很快变慢。

所以我想出了解决方案,但有一部分

所以这是每个条件的正则表达式

^((。)\\ 1 {3})-不能包含3个或更多连续的相同字母,数字或特殊字符

[a-zA-Z0-9 \\ S]-区分大小写的字符不能包含空格,字母和数字

[^ \\“&'<> [/] {|}〜^!]-一个或多个特殊字符,除了“&'⁄ <> [\\] {| }〜^!

{7,20} $-范围

但是如果将它们全部组合在一起,它们将无法按预期工作...

有什么建议吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM