密码校验2(超级变态的密码)

阅读: 评论:0

密码校验2(超级变态的密码)

密码校验2(超级变态的密码)

先上图,因为密码的规则比较杂乱,请教了同事后发现也没有什么好的统一校验处理方法,只能一个个if去判断,看着比较💩



密码校验工具集:

/**
* 密码校验
*/
passwordRules(str) {// psdStrRules判断密码必须包含大小写字母数字特殊字符// psdRepRules判断是否连续字符出现2次以上或者一共出现4次以上let psdStrRules = /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[~!@#$%^&*()_ +^-={}:";'<>?,./])[da-zA-Z~!@#$%^&*()_ +^-={}:";'<>?,./]{8,32}$/;// let psdRepRules = /^(.)1{2}|(.)(.*2){3}$/;let psdRepRules = /(.)1{2}/if (st(str) || !st(str)) {return false;} else {return true}
},// 同一字符不可连续3次或不连续4次以上
passwordRules1(str) {let obj = {}for (let i = 0; i <= str.length; i++) {let key = str[i];if (obj[key]) {obj[key]++;} else {obj[key] = 1}}return Object.values(obj).some(item => item > 4);
},/**
* 校验新旧密码最少差别字符策略
*/
checkMinNewOldPwdDiffNum(newVal = '', oldVal = '', minNewOldPwdDiffNum = 0) {let isMinNewOldPwdDiffNumOK = falselet nDiffNum = 0//取新旧密码的个数差异,如果个数差异大于最少差别字符数,直接校验通过nDiffNum = Math.abs(newVal.length - oldVal.length)if (nDiffNum < minNewOldPwdDiffNum) {let newPwdCur = 0let oldPwdCur = 0//遍历两个字符串,如果对应位置不一样的字符数加上个数差异大于nValue,则直接返回成功while (newPwdCur !== newVal.length && oldPwdCur !== oldVal.length) {if (newVal.charAt(newPwdCur) !== oldVal.charAt(oldPwdCur)) {nDiffNum++if (nDiffNum >= minNewOldPwdDiffNum) {isMinNewOldPwdDiffNumOK = truebreak}}newPwdCur++oldPwdCur++}} else {isMinNewOldPwdDiffNumOK = true}return isMinNewOldPwdDiffNumOK
}

本文发布于:2024-02-01 05:04:51,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170673509134080.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:密码   超级变态
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23