js 验证银行卡号

来源:互联网 发布:阿里达摩盘数据应用 编辑:程序博客网 时间:2024/04/29 19:45

先了解一下银行卡luhm算法,算法比较简单。(16位和19位卡号通用)

1、除去校验位后,从右至左,将卡号按位编码,从0开始。

2、将偶数位×2,得到的结果按位相加,比如偶数为6,×2=12,则将1和2相加=3;奇数位则直接参与相加;

3、重复步骤2得到总和,该总和加上校验位应能被10整除,否则校验位不正确。


var bankno = "";sss

    function checkNum(){
        
             var account = $("#banknum").val();
             luhmCheck(account);
            }
      
    function luhmCheck(bankno){
        bankno = bankno.replace(/\s/ig,'');
        var lastNum=bankno.substring(bankno.length-1,bankno.length);//取出最后一位(与luhm进行比较)
        var first15Num=bankno.substring(0,bankno.length-1);//前15或18位
        var newArr=new Array();
        var sumTotal = 0;
        for(var i = first15Num.length-1,j=0;i>=0;i--,j++){
                    var yuansu= parseInt(first15Num[i]);
                    if(j%2==0){
                         yuansu *= 2;
                         yuansu = parseInt(yuansu/10)+parseInt(yuansu%10);
                        }
                    sumTotal += parseInt(yuansu);
            }
        alert(sumTotal+"sumTotal");
          
        //计算Luhm值
        var k= parseInt(sumTotal)%10==0?0:10-parseInt(sumTotal)%10;
        if(lastNum==k){
        alert("gule");
        return true;
        }
        else{
        alert("格式错误");
        return false;
        }        

    }

看完之后,欢迎大家提出问题和见解,或者说你有什么更好的方法提供出来,供大家参考。


0 0
原创粉丝点击