我正在研究输入卫生,并希望编写用于密码验证的正则表达式。我使用OWASP ESAPI来验证输入参数,但我不能这样做,因为ESAPI为密码验证提供的正则表达式并不满足所有条件。
如
•使用字母和数字8-20个字符
•不能有3个或更多连续相同的字母,数字或特殊字符
•不能包含空格
可选的:
•一个或多个特殊字符,“&'/ <> [\] {|除外}〜^!
• 区分大小写
Pawas SP Reges - Kaxsupoi
我试图修改它,但我没有得到预期的结果以及我不是真正的正则表达的超级知己,因为我以前从未使用过它们。我如何创建一个可以包含所有条件的正则表达式?
谢谢
我建议您不要使用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 {3}) - 不能有3个或更多连续相同的字母,数字或特殊字符
[a-zA-Z0-9 \ S] - 区分大小写不能包含空格和字母和数字
[^ \“&'<> [/] {|}〜^!] - 一个或多个特殊字符,”&'/ <> [\] {|除外}〜^!
{7,20} $ - 范围
但如果将它们组合在一起它们就不会按预期工作......
有什么建议吗?