针对于软件项目安全性检测中的APP密码安全等级鉴定需求,需要强密码类型的检测代码编写策略。

正则:
public static String pwdReg = "^(?![A-Za-z0-9]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$)[a-zA-Z0-9\\W]{8,16}$";
对于上述正则表达式,发现特殊字符的检测中,下划线 _ 被漏掉了,且允许输入空格,也就是:
不通过,目前为止还不知道怎么优化这条正则,希望对正则有理解的朋友帮忙修改一下。看了网上绝大多数正则,都无法满足我的需求(标题所写),目前解决策略如下:
/**密码类型检测
* @return boolean 是否通过强密码规则
*/
public boolean check() {
//特殊字符枚举
String regEx = "[ _`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]|\n|\r|\t";
Pattern pattern = Pattern.compile(regEx);
Matcher matcher = pattern.matcher(pwdStr);
boolean specialStrFlag = matcher.find();
//必须包含大小写字母和数字的组合,可以使用特殊字符,长度在8-10之间
boolean numStrFlag = pwdStr.matches("^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$");
if (specialStrFlag && numStrFlag) {
return true;
} else {
return false;
}
}
不想花太多时间在这,故通过枚举的方式实现与避免。
针对软件项目安全性检测中的APP密码安全等级鉴定需求,本文探讨了强密码类型的检测代码编写策略,分析并优化了一段用于检测密码强度的正则表达式,确保其能有效涵盖大小写字母、数字及特殊字符,排除空格,并考虑到了下划线的匹配。
1168

被折叠的 条评论
为什么被折叠?



