- 卡号长度允许范围:15—19
- 从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
- 从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。
- 将奇数位总和加上偶数位总和,结果应该可以被10整除。
function validate(card) {
var REG_LENGTH = /^\d{15,19}$/;
if (!REG_LENGTH.test(card)) {
return false;
}
return card.split('').reverse().reduce(function (prev, current, i) {
var n = parseInt(current, 10);
if (i % 2 === 1) {
n *= 2;
if (n > 9) {
n -= 9;
}
}
return prev + n;
}, 0) % 10 === 0;
}