当前位置:首页 > 前端开发 > 正文内容

JS校验银行卡号以及经过银行卡号主动带出所属银行信息

邻居的猫1个月前 (12-09)前端开发569

本文实例叙述了JS完成的获取银行卡号归属地及银行卡类型操作以及Luhn校验算法校验银行卡号算法。共享给我们供我们参阅,详细如下:

javascript代码如下

/**
 * Luhn校验算法校验银行卡号;Luhm校验规矩:16位银行卡号(19位通用):1、将未带校验位的 15(或18)位卡号从右顺次编号 1 到 15(18),坐落奇数位号上的数字乘以 2;2、将奇位乘积的个十位悉数相加,再加上一切偶数位上的数字。
 * @param {string} bankno 银行卡号
 * @returns 是否为正确的银行卡号
 */
function verifyBankCardNumber(bankno) {
    var lastNum = bankno.substr(bankno.length - 1, 1); //取出最终一位(与luhm进行比较)
    var first15Num = bankno.substr(0, bankno.length - 1); //前15或18位
    var newArr = new Array();
    for (var i = first15Num.length - 1; i > -1; i--) {
        //前15或18位倒序存进数组
        newArr.push(first15Num.substr(i, 1));
    }
    var arrJiShu = new Array(); //奇数位*2的积 <9
    var arrJiShu2 = new Array(); //奇数位*2的积 >9
    var arrOuShu = new Array(); //偶数位数组
    for (var j = 0; j < newArr.length; j++) {
        if ((j + 1) % 2 == 1) {
            //奇数位
            if (parseInt(newArr[j]) * 2 < 9) arrJiShu.push(parseInt(newArr[j]) * 2);
            else arrJiShu2.push(parseInt(newArr[j]) * 2);
        } //偶数位
        else arrOuShu.push(newArr[j]);
    }
    var jishu_child1 = new Array(); //奇数位*2 >9 的切割之后的数组个位数
    var jishu_child2 = new Array(); //奇数位*2 >9 的切割之后的数组十位数
    for (var h = 0; h < arrJiShu2.length; h++) {
        jishu_child1.push(parseInt(arrJiShu2[h]) % 10);
        jishu_child2.push(parseInt(arrJiShu2[h]) / 10);
    }
    var sumJiShu = 0; //奇数位*2 < 9 的数组之和
    var sumOuShu = 0; //偶数位数组之和
    var sumJiShuChild1 = 0; //奇数位*2 >9 的切割之后的数组个位数之和
    var sumJiShuChild2 = 0; //奇数位*2 >9 的切割之后的数组十位数之和
    var sumTotal = 0;
    for (var m = 0; m < arrJiShu.length; m++) {
        sumJiShu = sumJiShu + parseInt(arrJiShu[m]);
    }
    for (var n = 0; n < arrOuShu.length; n++) {
        sumOuShu = sumOuShu + parseInt(arrOuShu[n]);
    }
    for (var p = 0; p < jishu_child1.length; p++) {
        sumJiShuChild1 = sumJiShuChild1 + parseInt(jishu_child1[p]);
        sumJiShuChild2 = sumJiShuChild2 + parseInt(jishu_child2[p]);
    }
    //核算总和
    sumTotal =
        parseInt(sumJiShu) +
        parseInt(sumOuShu) +
        parseInt(sumJiShuChild1) +
        parseInt(sumJiShuChild2);
    //核算Luhm值
    var k = parseInt(sumTotal) % 10 == 0 ? 10 : parseInt(sumTotal) % 10;
    var luhm = 10 - k;
    var my = false;
    if (lastNum == luhm) {
        //Luhm验证经过
        my = true;
    } else {
        //银行卡号有必要契合Luhm校验
        my = false;
    }
    return my;
}

/**
 * 经过用户输入的银行卡号辨认该银行卡所属开户行银行称号
 * @param {string} bankCard 银行卡号
 * @returns 回来银行信息目标:{bankName: '银行称号', bankCode: '银行代码', cardType: '卡的品种', cardTypeName: '卡片类型称号'}
 */
function bankCardAttribution(bankCard) {
    var cardTypeMap = {
        DC: "储蓄卡",
        CC: "信用卡",
        SCC: "准贷记卡",
        PC: "预付费卡",
    };

    function extend(target, source) {
        var result = {};
        var key;
        target = target || {};
        source = source || {};
        for (key in target) {
            if (target.hasOwnProperty(key)) {
                result[key] = target[key];
            }
        }
        for (key in source) {
            if (source.hasOwnProperty(key)) {
                result[key] = source[key];
            }
        }
        return result;
    }

    function getCardTypeName(cardType) {
        if (cardTypeMap[cardType]) {
            return cardTypeMap[cardType];
        }
        return undefined;
    }
    var bankcardList = [{
        bankName: "我国邮政储蓄银行",
        bankCode: "PSBC",
        patterns: [{
            reg: /^(621096|621098|622150|622151|622181|622188|622199|955100|621095|620062|621285|621798|621799|621797|620529|621622|621599|621674|623218|623219)\d{13}$/g,
            cardType: "DC",
        },
        {
            reg: /^(62215049|62215050|62215051|62218850|62218851|62218849)\d{11}$/g,
            cardType: "DC",
        },
        {
            reg: /^(622812|622810|622811|628310|625919)\d{10}$/g,
            cardType: "CC",
        },
        ],
    },
    {
        bankName: "我国工商银行",
        bankCode: "ICBC",
        patterns: [{
            reg: /^(620200|620302|620402|620403|620404|620406|620407|620409|620410|620411|620412|620502|620503|620405|620408|620512|620602|620604|620607|620611|620612|620704|620706|620707|620708|620709|620710|620609|620712|620713|620714|620802|620711|620904|620905|621001|620902|621103|621105|621106|621107|621102|621203|621204|621205|621206|621207|621208|621209|621210|621302|621303|621202|621305|621306|621307|621309|621311|621313|621211|621315|621304|621402|621404|621405|621406|621407|621408|621409|621410|621502|621317|621511|621602|621603|621604|621605|621608|621609|621610|621611|621612|621613|621614|621615|621616|621617|621607|621606|621804|621807|621813|621814|621817|621901|621904|621905|621906|621907|621908|621909|621910|621911|621912|621913|621915|622002|621903|622004|622005|622006|622007|622008|622010|622011|622012|621914|622015|622016|622003|622018|622019|622020|622102|622103|622104|622105|622013|622111|622114|622017|622110|622303|622304|622305|622306|622307|622308|622309|622314|622315|622317|622302|622402|622403|622404|622313|622504|622505|622509|622513|622517|622502|622604|622605|622606|622510|622703|622715|622806|622902|622903|622706|623002|623006|623008|623011|623012|622904|623015|623100|623202|623301|623400|623500|623602|623803|623901|623014|624100|624200|624301|624402|623700|624000)\d{12}$/g,
            cardType: "DC",
        },
        {
            reg: /^(622200|622202|622203|622208|621225|620058|621281|900000|621558|621559|621722|621723|620086|621226|621618|620516|621227|621288|621721|900010|623062|621670|621720|621379|621240|621724|621762|621414|621375|622926|622927|622928|622929|622930|622931|621733|621732|621372|621369|621763)\d{13}$/g,
            cardType: "DC",
        },
        {
            reg: /^(402791|427028|427038|548259|621376|621423|621428|621434|621761|621749|621300|621378|622944|622949|621371|621730|621734|621433|621370|621764|621464|621765|621750|621377|621367|621374|621731|621781)\d{10}$/g,
            cardType: "DC",
        },
        {
            reg: /^(9558)\d{15}$/g,
            cardType: "DC",
        },
        {
            reg: /^(370246|370248|370249|370247|370267|374738|374739)\d{9}$/g,
            cardType: "CC",
        },
        {
            reg: /^(427010|427018|427019|427020|427029|427030|427039|438125|438126|451804|451810|451811|458071|489734|489735|489736|510529|427062|524091|427064|530970|530990|558360|524047|525498|622230|622231|622232|622233|622234|622235|622237|622239|622240|622245|622238|451804|451810|451811|458071|628288|628286|622206|526836|513685|543098|458441|622246|544210|548943|356879|356880|356881|356882|528856|625330|625331|625332|622236|524374|550213|625929|625927|625939|625987|625930|625114|622159|625021|625022|625932|622889|625900|625915|625916|622171|625931|625113|625928|625914|625986|625925|625921|625926|625942|622158|625917|625922|625934|625933|625920|625924|625017|625018|625019)\d{10}$/g,
            cardType: "CC",
        },
        {
            reg: /^(45806|53098|45806|53098)\d{11}$/g,
            cardType: "CC",
        },
        {
            reg: /^(622210|622211|622212|622213|622214|622220|622223|622225|622229|622215|622224)\d{10}$/g,
            cardType: "SCC",
        },
        {
            reg: /^(620054|620142|620184|620030|620050|620143|620149|620124|620183|620094|620186|620148|620185)\d{10}$/g,
            cardType: "PC",
        },
        {
            reg: /^(620114|620187|620046)\d{13}$/g,
            cardType: "PC",
        },
        ],
    },
    {
        bankName: "我国农业银行",
        bankCode: "ABC",
        patterns: [{
            reg: /^(622841|622824|622826|622848|620059|621282|622828|622823|621336|621619|622821|622822|622825|622827|622845|622849|623018|623206|621671|622840|622843|622844|622846|622847|620501)\d{13}$/g,
            cardType: "DC",
        },
        {
            reg: /^(95595|95596|95597|95598|95599)\d{14}$/g,
            cardType: "DC",
        },
        {
            reg: /^(103)\d{16}$/g,
            cardType: "DC",
        },
        {
            reg: /^(403361|404117|404118|404119|404120|404121|463758|519412|519413|520082|520083|552599|558730|514027|622836|622837|628268|625996|625998|625997|622838|625336|625826|625827|544243|548478|628269)\d{10}$/g,
            cardType: "CC",
        },
        {
            reg: /^(622820|622830)\d{10}$/g,
            cardType: "SCC",
        },
        ],
    },
    {
        bankName: "我国银行",
        bankCode: "BOC",
        patterns: [{
            reg: /^(621660|621661|621662|621663|621665|621667|621668|621669|621666|456351|601382|621256|621212|621283|620061|621725|621330|621331|621332|621333|621297|621568|621569|621672|623208|621620|621756|621757|621758|621759|621785|621786|621787|621788|621789|621790|622273|622274|622771|622772|622770|621741|621041)\d{13}$/g,
            cardType: "DC",
        },
        {
            reg: /^(621293|621294|621342|621343|621364|621394|621648|621248|621215|621249|621231|621638|621334|621395|623040|622348)\d{10}$/g,
            cardType: "DC",
        },
        {
            reg: /^(625908|625910|625909|356833|356835|409665|409666|409668|409669|409670|409671|409672|512315|512316|512411|512412|514957|409667|438088|552742|553131|514958|622760|628388|518377|622788|628313|628312|622750|622751|625145|622479|622480|622789|625140|622346|622347)\d{10}$/g,
            cardType: "CC",
        },
        {
            reg: /^(518378|518379|518474|518475|518476|524865|525745|525746|547766|558868|622752|622753|622755|524864|622757|622758|622759|622761|622762|622763|622756|622754|622764|622765|558869|625905|625906|625907|625333)\d{10}$/g,
            cardType: "SCC",
        },
        {
            reg: /^(53591|49102|377677)\d{11}$/g,
            cardType: "SCC",
        },
        {
            reg: /^(620514|620025|620026|620210|620211|620019|620035|620202|620203|620048|620515|920000)\d{10}$/g,
            cardType: "PC",
        },
        {
            reg: /^(620040|620531|620513|921000|620038)\d{13}$/g,
            cardType: "PC",
        },
        ],
    },
    {
        bankName: "我国建设银行",
        bankCode: "CCB",
        patterns: [{
            reg: /^(621284|436742|589970|620060|621081|621467|621598|621621|621700|622280|622700|623211|623668)\d{13}$/g,
            cardType: "DC",
        },
        {
            reg: /^(421349|434061|434062|524094|526410|552245|621080|621082|621466|621488|621499|622966|622988|622382|621487|621083|621084|620107)\d{10}$/g,
            cardType: "DC",
        },
        {
            reg: /^(436742193|622280193)\d{10}$/g,
            cardType: "DC",
        },
        {
            reg: /^(553242)\d{12}$/g,
            cardType: "CC",
        },
        {
            reg: /^(625362|625363|628316|628317|356896|356899|356895|436718|436738|436745|436748|489592|531693|532450|532458|544887|552801|557080|558895|559051|622166|622168|622708|625964|625965|625966|628266|628366|622381|622675|622676|622677)\d{10}$/g,
            cardType: "CC",
        },
        {
            reg: /^(5453242|5491031|5544033)\d{11}$/g,
            cardType: "CC",
        },
        {
            reg: /^(622725|622728|436728|453242|491031|544033|622707|625955|625956)\d{10}$/g,
            cardType: "SCC",
        },
        {
            reg: /^(53242|53243)\d{11}$/g,
            cardType: "SCC",
        },
        ],
    },
    {
        bankName: "我国交通银行",
        bankCode: "COMM",
        patterns: [{
            reg: /^(622261|622260|622262|621002|621069|621436|621335)\d{13}$/g,
            cardType: "DC",
        },
        {
            reg: /^(620013)\d{10}$/g,
            cardType: "DC",
        },
        {
            reg: /^(405512|601428|405512|601428|622258|622259|405512|601428)\d{11}$/g,
            cardType: "DC",
        },
        {
            reg: /^(49104|53783)\d{11}$/g,
            cardType: "CC",
        },
        {
            reg: /^(434910|458123|458124|520169|522964|552853|622250|622251|521899|622253|622656|628216|622252|955590|955591|955592|955593|628218|625028|625029)\d{10}$/g,
            cardType: "CC",
        },
        {
            reg: /^(622254|622255|622256|622257|622284)\d{10}$/g,
            cardType: "SCC",
        },
        {
            reg: /^(620021|620521)\d{13}$/g,
            cardType: "PC",
        },
        ],
    },
    {
        bankName: "招商银行",
        bankCode: "CMB",
        patterns: [{
            reg: /^(402658|410062|468203|512425|524011|622580|622588|622598|622609|95555|621286|621483|621485|621486|621299)\d{10}$/g,
            cardType: "DC",
        },
        {
            reg: /^(690755)\d{9}$/g,
            cardType: "DC",
        },
        {
            reg: /^(690755)\d{12}$/g,
            cardType: "DC",
        },
        {
            reg: /^(356885|356886|356887|356888|356890|439188|439227|479228|479229|521302|356889|545620|545621|545947|545948|552534|552587|622575|622576|622577|622578|622579|545619|622581|622582|545623|628290|439225|518710|518718|628362|439226|628262|625802|625803)\d{10}$/g,
            cardType: "CC",
        },
        {
            reg: /^(370285|370286|370287|370289)\d{9}$/g,
            cardType: "CC",
        },
        {
            reg: /^(620520)\d{13}$/g,
            cardType: "PC",
        },
        ],
    },
    {
        bankName: "我国民生银行",
        bankCode: "CMBC",
        patterns: [{
            reg: /^(622615|622616|622618|622622|622617|622619|415599|421393|421865|427570|427571|472067|472068|622620)\d{10}$/g,
            cardType: "DC",
        },
        {
            reg: /^(545392|545393|545431|545447|356859|356857|407405|421869|421870|421871|512466|356856|528948|552288|622600|622601|622602|517636|622621|628258|556610|622603|464580|464581|523952|545217|553161|356858|622623|625912|625913|625911)\d{10}$/g,
            cardType: "CC",
        },
        {
            reg: /^(377155|377152|377153|377158)\d{9}$/g,
            cardType: "CC",
        },
        ],
    },
    {
        bankName: "我国光大银行",
        bankCode: "CEB",
        patterns: [{
            reg: /^(303)\d{13}$/g,
            cardType: "DC",
        },
        {
            reg: /^(90030)\d{11}$/g,
            cardType: "DC",
        },
        {
            reg: /^(620535)\d{13}$/g,
            cardType: "DC",
        },
        {
            reg: /^(620085|622660|622662|622663|622664|622665|622666|622667|622669|622670|622671|622672|622668|622661|622674|622673|620518|621489|621492)\d{10}$/g,
            cardType: "DC",
        },
        {
            reg: /^(356837|356838|486497|622657|622685|622659|622687|625978|625980|625981|625979|356839|356840|406252|406254|425862|481699|524090|543159|622161|622570|622650|622655|622658|625975|625977|628201|628202|625339|625976)\d{10}$/g,
            cardType: "CC",
        },
        ],
    },
    {
        bankName: "中信银行",
        bankCode: "CITIC",
        patterns: [{
            reg: /^(433670|433680|442729|442730|620082|622690|622691|622692|622696|622698|622998|622999|433671|968807|968808|968809|621771|621767|621768|621770|621772|621773|622453|622456)\d{10}$/g,
            cardType: "DC",
        },
        {
            reg: /^(622459)\d{11}$/g,
            cardType: "DC",
        },
        {
            reg: /^(376968|376969|376966)\d{9}$/g,
            cardType: "CC",
        },
        {
            reg: /^(400360|403391|403392|404158|404159|404171|404172|404173|404174|404157|433667|433668|433669|514906|403393|520108|433666|558916|622678|622679|622680|622688|622689|628206|556617|628209|518212|628208|356390|356391|356392|622916|622918|622919)\d{10}$/g,
            cardType: "CC",
        },
        ],
    },
    {
        bankName: "华夏银行",
        bankCode: "HXBANK",
        patterns: [{
            reg: /^(622630|622631|622632|622633|999999|621222|623020|623021|623022|623023)\d{10}$/g,
            cardType: "DC",
        },
        {
            reg: /^(523959|528709|539867|539868|622637|622638|628318|528708|622636|625967|625968|625969)\d{10}$/g,
            cardType: "CC",
        },
        ],
    },
    {
        bankName: "深发/安全银行",
        bankCode: "SPABANK",
        patterns: [{
            reg: /^(621626|623058)\d{13}$/g,
            cardType: "DC",
        },
        {
            reg: /^(602907|622986|622989|622298|627069|627068|627066|627067|412963|415752|415753|622535|622536|622538|622539|998800|412962|622983)\d{10}$/g,
            cardType: "DC",
        },
        {
            reg: /^(531659|622157|528020|622155|622156|526855|356869|356868|625360|625361|628296|435744|435745|483536|622525|622526|998801|998802)\d{10}$/g,
            cardType: "CC",
        },
        {
            reg: /^(620010)\d{10}$/g,
            cardType: "PC",
        },
        ],
    },
    {
        bankName: "兴业银行",
        bankCode: "CIB",
        patterns: [{
            reg: /^(438589)\d{12}$/g,
            cardType: "DC",
        },
        {
            reg: /^(90592)\d{11}$/g,
            cardType: "DC",
        },
        {
            reg: /^(966666|622909|438588|622908)\d{12}$/g,
            cardType: "DC",
        },
        {
            reg: /^(461982|486493|486494|486861|523036|451289|527414|528057|622901|622902|622922|628212|451290|524070|625084|625085|625086|625087|548738|549633|552398|625082|625083|625960|625961|625962|625963)\d{10}$/g,
            cardType: "CC",
        },
        {
            reg: /^(620010)\d{10}$/g,
            cardType: "PC",
        },
        ],
    },
    {
        bankName: "上海银行",
        bankCode: "SHBANK",
        patterns: [{
            reg: /^(621050|622172|622985|622987|620522|622267|622278|622279|622468|622892|940021)\d{12}$/g,
            cardType: "DC",
        },
        {
            reg: /^(438600)\d{10}$/g,
            cardType: "DC",
        },
        {
            reg: /^(356827|356828|356830|402673|402674|486466|519498|520131|524031|548838|622148|622149|622268|356829|622300|628230|622269|625099|625953)\d{10}$/g,
            cardType: "CC",
        },
        ],
    },
    {
        bankName: "浦东发展银行",
        bankCode: "SPDB",
        patterns: [{
            reg: /^(622516|622517|622518|622521|622522|622523|984301|984303|621352|621793|621795|621796|621351|621390|621792|621791)\d{10}$/g,
            cardType: "DC",
        },
        {
            reg: /^(84301|84336|84373|84385|84390|87000|87010|87030|87040|84380|84361|87050|84342)\d{11}$/g,
            cardType: "DC",
        },
        {
            reg: /^(356851|356852|404738|404739|456418|498451|515672|356850|517650|525998|622177|622277|628222|622500|628221|622176|622276|622228|625957|625958|625993|625831)\d{10}$/g,
            cardType: "CC",
        },
        {
            reg: /^(622520|622519)\d{10}$/g,
            cardType: "SCC",
        },
        {
            reg: /^(620530)\d{13}$/g,
            cardType: "PC",
        },
        ],
    },
    {
        bankName: "广发银行",
        bankCode: "GDB",
        patterns: [{
            reg: /^(622516|622517|622518|622521|622522|622523|984301|984303|621352|621793|621795|621796|621351|621390|621792|621791)\d{10}$/g,
            cardType: "DC",
        },
        {
            reg: /^(622568|6858001|6858009|621462)\d{13}$/g,
            cardType: "DC",
        },
        {
            reg: /^(9111)\d{15}$/g,
            cardType: "DC",
        },
        {
            reg: /^(406365|406366|428911|436768|436769|436770|487013|491032|491033|491034|491035|491036|491037|491038|436771|518364|520152|520382|541709|541710|548844|552794|493427|622555|622556|622557|622558|622559|622560|528931|558894|625072|625071|628260|628259|625805|625806|625807|625808|625809|625810)\d{10}$/g,
            cardType: "CC",
        },
        {
            reg: /^(685800|6858000)\d{13}$/g,
            cardType: "CC",
        },
        ],
    },
    {
        bankName: "渤海银行",
        bankCode: "BOHAIB",
        patterns: [{
            reg: /^(

扫描二维码推送至手机访问。

版权声明:本文由51Blog发布,如需转载请注明出处。

本文链接:https://www.51blog.vip/?id=429

分享给朋友:

“JS校验银行卡号以及经过银行卡号主动带出所属银行信息” 的相关文章

 笔记 | Angular 完成 keep-alive (路由复用)

笔记 | Angular 完成 keep-alive (路由复用)

Angular 的路由复用战略(RouteReuseStrategy)是一种用于优化路由跳转功能和进步用户体会的机制。经过完结RouteReuseStrategy接口,后能够自界说路由的复用行为,防止不必要的组件毁掉和重建,一起坚持组件的状况。 以下是对Angular路由复用战略的具体介绍: 一、基...

html课程表代码

```html 课程表 table { width: 100%; bordercollapse: collapse; } th, td { border: 1px solid b...

html是什么意思,HTML的定义

HTML 是超文本标记语言(HyperText Markup Language)的缩写,它是一种用于创建网页的标准标记语言。HTML 使用标记(tags)来描述网页的结构和内容,例如标题、段落、图片、链接等。这些标记被浏览器解析,并按照指定的方式显示网页内容。HTML 是由万维网联盟(World W...

html网页特效代码,html官方下载免费版

html网页特效代码,html官方下载免费版

创建一个HTML网页特效需要结合HTML、CSS和JavaScript。下面是一个简单的示例,创建一个带有旋转特效的按钮:```html旋转特效按钮 .rotatebutton { padding: 10px 20px; backgroundcolor: 4CAF50; colo...

vue背景图片,背景图片的基本设置

在 Vue 中设置背景图片有几种常见的方法,下面我将逐一介绍:```vue .backgroundimage { backgroundimage: url; backgroundsize: cover; backgroundposition: center; backgroun...

html如何打开,HTML壅壃控壄嬙墼有墿壂

html如何打开,HTML壅壃控壄嬙墼有墿壂

HTML(超文本标记语言)本身并不是一个程序或应用,而是一种用于创建网页的标准标记语言。因此,您不能“打开”HTML,而是需要将其嵌入到网页中,然后通过浏览器来查看和交互。要查看一个HTML文件,您需要执行以下步骤:1. 创建HTML文件:使用文本编辑器(如Notepad 、Sublime Tex...