JAVA密码校验 | 您所在的位置:网站首页 › java密码强度正则 › JAVA密码校验 |
需求
被产品坑了一波,需求文档长这样, 结果APP一测试,跟我说: 密码不能连续6位或6位以上,也就是说,支持11111aa@ 密码不能连续降序或升序6位及6位以上,也就是说,支持12345aa@ 这.....不过机智的我还是实现了。 APP接口代码实现 /** * 检查密码是否符合规则, * 1.密码长度至少8位以上 * 2.密码应至少包含大写字母,小写字母,数字,特殊符号中的三项 * 3.禁止使用相同的数字或字符作为密码,如111111,aaaaaa等 * 4.禁止使用连续升序或降序的数字或字母作为密码,如123456,abcdef等 * true检验合格 * false检验不合格 */ public static boolean checkPwd(String password) { //数字 String REG_NUMBER = ".*\\d+.*"; //小写字母 String REG_UPPERCASE = ".*[A-Z]+.*"; //大写字母 String REG_LOWERCASE = ".*[a-z]+.*"; //特殊符号 String REG_SYMBOL = ".*[~!@#$%^&*()_+|,.?/:;'\\[\\]{}\"]+.*"; //密码为空或者长度小于8位则返回false if (password == null || password.length() =6){ // return false; // } // if(flag2>=6){ // return false; // } return true; } 前端JS代码实现 function matchPwd(password){ var reg = new RegExp('(?=.*[0-9])(?=.*[a-zA-Z])(?=.*[^a-zA-Z0-9]).{8}'); if(!reg.test(password)){ console.log("222不符合数字、字母、符号"); return false; } var chars = password.split(''); for(var i = 0, l = chars.length; i < l-5; i ++) { var n1 = chars[i].charCodeAt(); var n2 = chars[i + 1].charCodeAt(); var n3 = chars[i + 2].charCodeAt(); var n4 = chars[i + 3].charCodeAt(); var n5 = chars[i + 4].charCodeAt(); var n6 = chars[i + 5].charCodeAt(); // 判断重复字符 if (n1 == n2 && n1 == n3 && n1 == n4 && n1 == n5 && n1 == n6) { console.log("333333重复"); return false; } // 判断连续字符: 正序 + 倒序 if ((n1 + 1 == n2 && n1 + 2 == n3 && n1 + 3 == n4 && n1 + 4 == n5 && n1 + 5 == n6 ) || (n1 - 1 == n2 && n1 - 2 == n3 && n1 - 3 == n4 && n1 - 4 == n5 && n1 - 5 == n6)) { console.log("44444连续"); return false; } } return true; }
|
CopyRight 2018-2019 实验室设备网 版权所有 |