一 : 生成随机密码
生成随机密码
function randomPassword(min: number, max: number) {
let str = ""
let arr =
["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u",
"v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z",
'`', '~', '@', '#', '$', '%', '^', '&',
'*', '(', ')', '-', '_', '=', '+', '[',
'{', '}', ']', '|', ';', ':', ',', '<', '.', '>', '?']
let range = Math.round(Math.random() * (max - min)) + min
for (let i = 0; i < range; i++) {
let pos = Math.round(Math.random() * (arr.length - 1));
str += arr[pos]
}
return str
}
校验
1. 判断生成密码不可以连续或者倒叙方法
adjoinVerfy(str) {
let flag = false;
for (let i = 0; i < str.length; i++) {
if (i != 0) {
if (typeof Number(str[i]) === "Number") {
if (
parseInt(str[i]) + 1 == parseInt(str[i - 1]) ||
parseInt(str[i]) - 1 == parseInt(str[i - 1])
) {
flag = true;
break;
}
} else {
if (
str[i].charCodeAt() - str[i - 1].charCodeAt() == 1 ||
str[i].charCodeAt() - str[i - 1].charCodeAt() == -1
) {
flag = true;
break;
}
}
}
}
return flag;
}
2. 校验
testPassWorld() {
this.password = randomPassword(8, 16);
console.log(this.password);
let exp = /.*(?=.{8,16})(?=.*[0-9])(?=.*[A-Z])(?=.*[a-z])(?=.*[`~!@#$%^&*?\\(\\)\\-_=+\\[\\{\\}\\]|;:<.>,]).*$/;
if (exp.test(this.password)) {
let flag = this.adjoinVerfy(this.password);
if (flag) {
this.testPassWorld();
}
} else {
this.testPassWorld();
}
},