验证信用卡号的一种常用方法是通过Luhn算法,该算法有一个基本的规则:把信用卡号从右往左依次编号为0到n,其中最右边一位编号为0,然后对于每个奇数编号的数字乘以二,如果乘以二后的结果大于9,则将结果的各位数字相加,得到一个两位数的数字。
接着,将所有乘以二的数字和除了乘以二的数字的和相加,如果得到的和可以被10整除,则该信用卡号为合法的信用卡号。以下是一个检验Visa信用卡号的例子:
function isValidVisaCreditCardNumber(cardNumber) {
if (/[^0-9-\s]+/.test(cardNumber)) return false; //校验是否是纯数字
let nCheck = 0,
bEven = false;
cardNumber = cardNumber.replace(/\D/g, ""); //去掉非数字字符
for (let n = cardNumber.length - 1; n >= 0; n--) {
let cDigit = cardNumber.charAt(n),
nDigit = parseInt(cDigit, 10);
if (bEven && (nDigit *= 2) > 9) nDigit -= 9;
nCheck += nDigit;
bEven = !bEven;
}
return (nCheck % 10) == 0;
}
//可以检验Visa信用卡号的函数
对于MasterCard信用卡号的验证,有以下代码:
function isValidMasterCardCreditCardNumber(cardNumber) {
if (/[^0-9-\s]+/.test(cardNumber)) return false; //校验是否是纯数字
let nCheck = 0,
bEven = false;
cardNumber = cardNumber.replace(/\D/g, ""); //去掉非数字字符
for (let n = cardNumber.length - 1; n >= 0; n--) {
let cDigit = cardNumber.charAt(n),
nDigit = parseInt(cDigit, 10);
if (bEven) {
if ((nDigit *= 2) > 9) nDigit -= 9;
}
nCheck += nDigit;
bEven = !bEven;
}
return (nCheck % 10) == 0 && (cardNumber.charAt(0) == "5" && cardNumber.charAt(1) >= "1" && cardNumber.charAt(1) <= "5"); //检查主要的数字及其范围
}
//可以检验MasterCard信用卡号的函数
以上两个函数的参数都是一个字符串类型的信用卡号,如果验证成功则返回true,否则返回false。可以在自己编写的网站中调用这些函数来进行Visa、MasterCard信用卡号的验证。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Javascript验证Visa和MasterCard信用卡号的方法 - Python技术站