检查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
【检查Visa卡研究】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 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!");
}
}

    推荐阅读