[英]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.