原生JS生成指定位數(shù)的驗(yàn)證碼
使用原生JS生成指定位數(shù)的驗(yàn)證碼,驗(yàn)證碼包括字母和數(shù)字
##思路:使用String的fromCharCode方法將給定范圍的隨機(jī)數(shù)轉(zhuǎn)為大小寫(xiě)字母,再通過(guò)隨機(jī)數(shù)決定數(shù)組當(dāng)前位置為大寫(xiě)字母,小寫(xiě)字母或者是數(shù)字,函數(shù)傳入的參數(shù)當(dāng)做該數(shù)組的長(zhǎng)度,隨機(jī)填好數(shù)組后,對(duì)數(shù)組內(nèi)的元素做分情況處理:當(dāng)該數(shù)組內(nèi)沒(méi)有數(shù)字時(shí),需要隨機(jī)修改一個(gè)字母為一個(gè)隨機(jī)的數(shù)字;當(dāng)該數(shù)組沒(méi)有字母時(shí),需隨機(jī)修改一個(gè)數(shù)字為大寫(xiě)或者小寫(xiě)字母;正常情況下的有字母也有數(shù)字不做處理,每個(gè)判斷語(yǔ)句的最后使用數(shù)組的join方法將該數(shù)組轉(zhuǎn)換為字符串并return。
function verificationCode(num) {
var arr = [];
var letterFlag = false;
var numberFlag = false;
for (i = 0; i < num; i++) {
// 獲取隨機(jī)大寫(xiě)字母
var uppercase = String.fromCharCode(Math.round(Math.random() * 25 + 65));
// 獲取隨機(jī)小寫(xiě)字母
var lower = String.fromCharCode(Math.round(Math.random() * 25 + 97));
// 獲取隨機(jī)數(shù)字
var number = Math.round(Math.random() * 9);
// 獲取0-2的隨機(jī)數(shù)來(lái)隨機(jī)決定該位置是大寫(xiě)字母,小寫(xiě)字母或者是數(shù)字
var temp = Math.round(Math.random() * 2)
if (temp == 0) {
arr[i] = uppercase;
} else if (temp == 1) {
arr[i] = lower;
} else {
arr[i] = number;
}
}
// 檢查arr是否同時(shí)有字母與數(shù)字
for (var j = 0; j < arr.length; j++) {
if (Object.prototype.toString.call(arr[j]) == "[object String]") {
letterFlag = true;
}
if (typeof(arr[j]) == 'number') {
numberFlag = true;
}
}
// 對(duì)不同情況做處理
// 字母數(shù)字都有
if (letterFlag && numberFlag) {
return arr.join("");
}
// 沒(méi)有字母時(shí)
if (letterFlag == false && numberFlag == true) {
uppercase = String.fromCharCode(Math.round(Math.random() * 25 + 65));
lower = String.fromCharCode(Math.round(Math.random() * 25 + 97));
temp = Math.round(Math.random() * 1)
if (temp == 0) {
arr[Math.round(Math.random() * (num - 1))] = uppercase;
} else {
arr[Math.round(Math.random() * (num - 1))] = lower;
}
return arr.join("");
}
// 沒(méi)有數(shù)字時(shí)
if (letterFlag == true && numberFlag == false) {
number = Math.round(Math.random() * 9);
arr[Math.round(Math.random() * (num - 1))] = number;
return arr.join("");
}
}
var code = verificationCode(10);
console.log(code);
運(yùn)行結(jié)果

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- JS實(shí)現(xiàn)4位隨機(jī)驗(yàn)證碼
- H5+css3+js搭建帶驗(yàn)證碼的登錄頁(yè)面
- 原生js生成圖片驗(yàn)證碼
- js+h5 canvas實(shí)現(xiàn)圖片驗(yàn)證碼
- js+canvas繪制圖形驗(yàn)證碼
- JavaScript實(shí)現(xiàn)簡(jiǎn)單驗(yàn)證碼
- Jsp生成頁(yè)面驗(yàn)證碼的方法[附代碼]
- JavaScript 驗(yàn)證碼的實(shí)例代碼(附效果圖)
- js實(shí)現(xiàn)簡(jiǎn)單的驗(yàn)證碼
- js實(shí)現(xiàn)點(diǎn)擊獲取驗(yàn)證碼倒計(jì)時(shí)效果
相關(guān)文章
微信小程序?qū)崿F(xiàn)兩邊小中間大的輪播效果的示例代碼
這篇文章主要介紹了微信小程序?qū)崿F(xiàn)兩邊小中間大的輪播效果的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-12-12
JS設(shè)置隨機(jī)出現(xiàn)2個(gè)數(shù)字的實(shí)例代碼
這篇文章給大家分享基于js設(shè)置隨機(jī)出現(xiàn)2個(gè)數(shù)字的實(shí)例代碼,在文章下面給分享js產(chǎn)生隨機(jī)數(shù)的幾個(gè)用法介紹,感興趣的朋友一起看看吧2017-07-07
將字符串中由空格隔開(kāi)的每個(gè)單詞首字母大寫(xiě)
這篇文章主要介紹了如何將字符串中的每個(gè)單詞的首字母變?yōu)榇髮?xiě),需要的朋友可以參考下2014-04-04
利用JS實(shí)現(xiàn)AI自動(dòng)玩貪吃蛇
這篇文章主要為大家詳細(xì)介紹了如何利用JS實(shí)現(xiàn)AI版自動(dòng)玩貪吃蛇小游戲,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)JS游戲開(kāi)發(fā)有一定幫助,需要的可以參考一下2022-06-06
javascript 構(gòu)建模塊化開(kāi)發(fā)過(guò)程解析
這篇文章主要介紹了javascript 構(gòu)建模塊化開(kāi)發(fā)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
javascript 動(dòng)態(tài)數(shù)據(jù)下的錨點(diǎn)錯(cuò)位問(wèn)題解決方法
用 Javascript 實(shí)現(xiàn)錨點(diǎn)(Anchor)間平滑跳轉(zhuǎn)2008-12-12

