Nodejs 高级密码校验,重复字符,防止密码连位,横向密码物理按键连位,以及特殊字符连位等

const checkPass = (text, long, level) => {long ? long : 4;level ? level : 1;const _long = long - 1;let _split = null;let _num = 0;const _line = "01234567890-=,qwertyuiop[]\,asdfghjkl;',zxcvbnm,./";const _slash = ["1qaz", "2wsx", "3edc", "4rfv", "5tgb", "6yhn", "7ujm", "8ik,", "9ol.", "0p;/", "=[;.","-pl,", "0okm", "9ijn", "8uhb", "7ygv", "6tfc", "5rdx", "4esz"];const _numberAndAbc = "01234567890,abcdefghijklmnopqrstuvwxyz";const _find = (arr, text) => {return arr.find(v => v.toLowerCase() === text.toLowerCase());};const _checkMiddle = (text) => {if (text.length < long) {return false;}for (let i = 0; i < text.length; i++) {if (i > 0) {_checkRepeat(i - 1, text[i] ,text);}if (text.length - i > _long && ",".indexOf(_split) === -1) {_split = (text.substring(i, long + i)).toLowerCase();;switch (level) {case 1:if (_numberAndAbc.indexOf(_split) !== -1) {_num = 0;在这里插入代码片return false;} else {break;}case 2: case 3:if (_find(_slash, _split) || _line.indexOf(_split) !== -1 || _numberAndAbc.indexOf(_split) !== -1) {_num = 0;return false;} else {break;}default:return false;}}};if (_num === _long) {return false;}return true;};const _checkRepeat = (index, value, text) => {if (text[index].toLowerCase() === value.toLowerCase()) {_num++;} else {_num = 0;}};const _mapper = (text) => {let str = "";for (let i = 0; i < text.length; i++) {switch (text[i]) {case "~":str += "0";break;case "`":str += "0";break;case "!":str += "1";break;case "@":str += "2";break;case "#":str += "3";break;case "$":str += "4";break;case "%":str += "5";break;case "^":str += "6";break;case "&":str += "7";break;case "*":str += "8";break;case "(":str += "9";break;case ")":str += "0";break;case "_":str += "-";break;case "+":str += "=";break;case "{":str += "[";break;case "}":str += "]";break;case ":":str += ";";break;case '"':str += "'";break;case "<":str += ",";break;case ">":str += ".";break;case "?":str += "/";break;default:str += text[i];break;}}return str;};if (level === 1 || level === 2) {return _checkMiddle(text);} else if (level === 3) {return _checkMiddle(_mapper(text));} else {return false;}
};const text = "((_999" //设定检测字符
const long = 6; //设定连续按键不超过n位
const level = 3;// 1:只检测常规连续字符abcdef,123456   2:检测横向和斜向   3:检测连续特殊字符
const data = checkPass(text, long, level);
console.log(data);


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部