c#
public static bool CheckBankCardNo(string no) {
//第一步:从右边第1个数字开始每隔一位乘以2;
//第二步: 把在第一步中获得的乘积的各位数字相加,然后再与原号码中未乘2的各位数字相加;
//第三步:对于第二步求和值中个位数求10的补数,如果个位数为0则该校验码为0。
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex(@"^\d{7,19}$");
if (!regex.IsMatch(no)) return false;
var temp = no;
var temp0 = temp.ToCharArray().Reverse().ToArray();
var sum = 0d;
for (int i = 1, len = temp0.Length; i < len; i++) {
var temp1 = Convert.ToInt16(temp0[i].ToString());
if ((i+1) % 2 == 0) {
temp1 *= 2;
}
sum += Math.Floor(temp1 / 10d) + (temp1 % 10);
}
var checkCode = 10 - sum % 10;
return temp0[0].ToString()== checkCode.ToString("0");
}
js
function checkBankCardNo(no){
var reg=/^\d{7,19}$/;
if(!reg.test(no))return false;
var temp0 = no.split('').reverse();
var sum=0;
for(var i=1,len=temp0.length;i<len;i++){
var temp1=temp0[i]-0;
if((i+1)%2==0){
temp1 *= 2;
}
sum+=Math.floor(temp1/10)+(temp1%10);
}
var checkCode = 10 -(sum % 10);
return temp0[0] == checkCode;
}