javascript随机生成验证码

我写的是一个含数字英文大小写的一个四位字符的且没有重复字符的验证码,首先做验证码,就得清楚验证码的字符的取值范围。我的范围是数字和英文大小写,首先要做的就是把它们都拿出来存在一个数组中。代码如下

function val(){
	var arr = [];
	for(var i = 0; i < 10; i++){
		arr.push(i);
	}
	for(var j = 97; j < 123; j++){
		var small = String.fromCharCode(j);
		arr.push(small);
	}
	for(var j = 65; j < 91; j++){
		var big = String.fromCharCode(j);
		arr.push(big);
	}
	return arr;//将数字和英文的大小写用数组存起来
}

把组成随机数的值都拿出来存在arr这个数组中,
第二步:生成随机数,随机数生成很简单,只要拿arr这个数组长度去取随机数就好了,主要思想就是以arr这个数组长度作为范围去取随机数,取到的随机数作为数组arr的下标,然后根据下标取值,作为随机数的字符。

function code1(){
	var arr = val();

	var code = [];
	for(var m = 0; m < 4; m++){
		var index = Math.floor(Math.random()*arr.length);
		code[m] = arr[index];//取随机数
		arr.splice(index,1);//防止取到相同的字符
	}

	var code = code.join("");//拼接成字符串

	return code;
}

我还加了一点,避免随机数中有重复的字符,取到的随机数把他拼接成一个字符串。
第三步:拿到了验证码就要去验证,就根据我输入的与随机生成的去比对。

function proving(){
	var code = code1();
	while(true){
		//忽略大小写的验证
		if(prompt('输入验证码' + code).toLowerCase() == code.toLowerCase()){
			alert('验证成功');
			break;
		} else {
			alert('验证失败,重新验证');
		}
		code = code1();//重新调用函数,使输错之后更新验证码。
	}
}

我在比对的时候忽略了大小写,如果大小写也判断的话,去掉toLowerCase()方法就行了。然后还有一点就是如果输错了,就会重新调用一次随机生成验证码的函数,重新输入判断。

相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页