检查Visa卡研究

VISA和MASTERCARD信用卡卡号通常为16位:
xxxx xxxx xxxx xxxx
第1—6位 为发卡行的 BIN NO.
第7—12位 卡顺序号
第13位 0 代表主卡,1-9 代表副卡
第14位 代表卡结单发出日期
第15位 代表该卡为第几张卡,补发卡后会加1
第16位 检验码
另外至于当中的数字,VISA、MasterCard未作具体规定,由各发卡银行自行定义,因此,不同的发卡行对第13位的定义是不同的。

4907554135652145
12.2010


4334289768847

08/11/2006

 

----------------------------------
4000 0000 0000 0002
----------------------------------
4000 0000 0000 0010
----------------------------------
4000 0000 0000 0200
----------------------------------
4000 0000 0000 1000
----------------------------------
4000 0000 0002 0000
----------------------------------
4000 0000 0010 0000
----------------------------------
4000 0000 0200 0000
----------------------------------
4000 0000 1000 0000
----------------------------------
4000 0002 0000 0000
----------------------------------
4000 0010 0000 0000
----------------------------------
4000 0200 0000 0000
----------------------------------
4000 1000 0000 0000
----------------------------------
4002 0000 0000 0000
----------------------------------
4010 0000 0000 0000
----------------------------------
4200 0000 0000 0000
----------------------------------
4212 1212 1212 1214
                  =8*14+2
-989 8989 8989 898-

1位=>信用卡类型
2位=>
3位=>
4位=>
5位=>
6位=>
7位=>


function checkvisa(v){
 v=v.toString();
if(v.substring(0,1)!="4")return false;
 
cv=2
 for(var i=1;i<v.length-1;i++){
 s=Math.floor(v.substring(i,i+1))
 
 if(i%2==1){
  cv+=9*s 
 }else{
  cv+=8*s
 }
 }

if(cv!=v.substring(15,16)){
 return false;
}
return true;
}


}


function fnCheckVisa() {
    //VisaCard必须由16位数字组成,首位数字必须以4开头,每四位用-或者空格分隔,正则表达式可以为
    var re = /^4\d{3}[\s\-]?\d{4}[\s\-]?\d{4}[\s\-]?\d{4}$/;
    var VisaCard = document.getElementById("visaid").value;
    if (VisaCard.length > 0 && VisaCard != null) {
        if (re.test(VisaCard)) {
            alert("Thanks,您的VisaCard合法!");
        }
        else {
            alert("Sorry,您的VisaCard有误!");
        }
    }
    else {
        alert("请输入VisaCard!");
    }
}

 

你可能感兴趣的:(正则表达式)