先上图,因为密码的规则比较杂乱,请教了同事后发现也没有什么好的统一校验处理方法,只能一个个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 条评论) |