为密码验证编写正则表达式

问题描述 投票:0回答:2

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

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

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

•不能包含空格

可选的:

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

• 区分大小写

Pawas SP Reges - Kaxsupoi

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

谢谢

java regex regex-lookarounds
2个回答
0
投票

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

您最好寻找一个允许您传递配置的库(类似于![CDATA[^(?:(?=.*\d)(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[^A-Za-z0-9])(?=.*[a-z])|(?=.*[^A-Za-z0-9])(?=.*[A-Z])(?=.*[a-z])|(?=.*\d)(?=.*[A-Z])(?=.*[^A-Za-z0-9]))(?!.*(.)\1{2,})[A-Za-z0-9!~<>,;:_=?*+#."&§%°()\|\[\]\-\$\^\@\/]{8,32}$]])。

如果你不想要你应该使用常见的字符串函数来检查长度(passay,以及数字和特殊字符的存在(如str.length())。

它不仅更容易维护 - 它也会更快,因为非常复杂的RegEx查询很快就会变得很慢。


-1
投票

所以我想出了解决方案,但它的部分内容

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

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

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

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

{7,20} $ - 范围

但如果将它们组合在一起它们就不会按预期工作......

有什么建议吗?

© www.soinside.com 2019 - 2024. All rights reserved.