请编写js代码,检验用户输入的银行卡号是否符合规范的正确的卡号。
要验证用户输入的银行卡号是否符合规范,可以使用 Luhn 算法(也称为模 10 算法)。这是一个简单的校验算法,用于验证各种标识号码,如信用卡号码。以下是一个使用 JavaScript 实现的示例代码:
function isValidCardNumber(cardNumber) {
// 移除所有空格
cardNumber = cardNumber.replace(/\s+/g, '');
// 检查是否全为数字
if (!/^\d+$/.test(cardNumber)) {
return false;
}
// 使用 Luhn 算法进行校验
let sum = 0;
let shouldDouble = false;
// 从右到左遍历卡号
for (let i = cardNumber.length - 1; i >= 0; i--) {
let digit = parseInt(cardNumber[i]);
if (shouldDouble) {
digit *= 2;
if (digit > 9) {
digit -= 9;
}
}
sum += digit;
shouldDouble = !shouldDouble;
}
// 如果总和能被 10 整除,则卡号有效
return sum % 10 === 0;
}
// 示例用法
const userInput = "1234 5678 9012 3456";
if (isValidCardNumber(userInput)) {
console.log("银行卡号有效");
} else {
console.log("银行卡号无效");
}
请注意,这个函数只验证卡号的格式是否正确,并不验证卡号是否真实存在。