说明:生成的验证码不能含有 0,1,i,I,l,o,O
var code = [
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'
];
//需要排除的字符
var filterCode = [0, 1, 'i', 'I', 'l', 'o', 'O'];
function createValidCode(codeArray, filterCodeArray, n) {
//codeArray: 生成验证码的数组, array
//filterCodeArray: 排序验证码的字符数组, array
//n: 验证码个数, number
//保存生成的验证码
var validcode = [];
for (var i = 0; i < n; i++) {
//01-生成一个随机下标
var randomIndex = Math.floor(Math.random() * codeArray.length);
//02-通过随机下标获取元素
var element = code[randomIndex];
//判断生成的元素是否在filterCode数组中
if (filterCodeArray.indexOf(element) === -1) {
//如果element不在filterCode数组中
//03-保存生成的验证码
validcode.push(element);
} else {
//重新生成当前字符
i--;
}
}
return validcode.join('');
}
var vc1 = createValidCode(code, filterCode, 6);
console.log('vc1 ==> ', vc1);
var vc2 = createValidCode(code, filterCode, 4);
console.log('vc2 ==> ', vc2);