繁体   English   中英

Java创建用于密码验证的复杂正则表达式

[英]Java creating a complex regular expression for password validation

我现在有一个正则表达式,它对Java应用程序中的密码提出了要求。

我现在想修改此表达式,使其反映以下策略:

至少7个字符包含以下三个或更多字符类中的字符:

(az),(AZ),(0-9),(@#$ ,.)

并且开头或结尾的字符不会计入其字符类别。

对于正则表达式来说,这太复杂了吗? 如果没有,我该如何修改现有的以适应新的?

谢谢

这是我当前的:

String credPattern = "((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%,.]).{7,})";
pattern = Pattern.compile(credPattern);
Matcher matcher = pattern.matcher(pw);

此模式将应用所有四个字符类条件,即开始/结束和最小字符数要求:

^.(?=.*[a-z].)(?=.*[A-Z].)(?=.*[0-9].)(?=.*[@#$,.].).{6,}$

演示版
您想要做的就是将其分为四个Regex模式,如下所示

^.(?=.*[a-z].)(?=.*[A-Z].)(?=.*[0-9].).{6,}$    
^.(?=.*[a-z].)(?=.*[A-Z].)(?=.*[@#$,.].).{6,}$  
^.(?=.*[a-z].)(?=.*[0-9].)(?=.*[@#$,.].).{6,}$  
^.(?=.*[A-Z].)(?=.*[0-9].)(?=.*[@#$,.].).{6,}$  

运行每个脚本并使用您的脚本语言计算匹配数,如果大于3,则表示成功。
注意:按照您的原始样式,允许使用空格。

暂无
暂无

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

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