常用密码验证
至少8个字符,包含字母和数字
/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$/
至少8个字符,包含字母大小写和数字
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$/
至少8个字符,包含字母大小写和数字及特殊字符
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*?])[A-Za-z\d!@#$%^&*?]{8,}/
8-20个字符,包含字母大小写和数字及特殊字符
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[!@#$%^&*?])[A-Za-z\d!@#$%^&*?]{8,20}/
实践
随机生成一个8-15位的字符串,必须包含数字,字母大小写和指定特殊字符(-_#)
/**
* min: 长度下限
* max: 长度上限
*/
function randGen(min, max) {
// 种子集合
const seed = [
'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',
'_', '-', '#'
];
// 生成规则
const genReg = /^(?=.*[A-Za-z])(?=.*\d)(?=.*[-_#])[A-Za-z\d-_#]/;
// 辅助变量
let dist = '', // 目标字符串
pos = 0, // 随机位置
range = Math.round(Math.random() * (max - min)) + min;
// 不符合规则,继续查找
while(!genReg.test(dist)) {
// 重新赋值之前一定要清空,否则将会陷入死循环
dist = '';
// 随机生成一个字符串,此时生成的不一定符合规则
for(let i = 0; i < range; i++) {
pos = Math.round(Math.random() * (seed.length - 1));
dist += seed[pos];
}
}
// 符合规则,返回
return dist;
}
常用文件/文件夹命名验证 / \ : " ? < > | *
/[/\\"<>?*]/gi
8-20个字符仅支持中英文、下划线
/^[a-zA-Z0-9_\u4e00-\u9fa5]{1,30}$/
简易网址验证
// IP类地址需要进一步优化
/^((?:(?:https?|ftp)://|www.))?(-\.)?(?:[\w](?:[\w-]*[\w])?\.\w+[/?#]?)+([^\s/?\.#-]*)+(/[^\s]*)?$/