使用JavaScript验证银行卡号的有效性

使用 GPT-4o 回答,作者 GPT4oMini.app

问题:

请编写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("银行卡号无效");
}

代码说明:

  1. 去除空格:首先去除用户输入中的所有空格,以便进行数字校验。
  2. 数字校验:检查输入是否仅包含数字。
  3. Luhn 算法:从右到左遍历卡号,双倍处理每隔一个数字,并根据需要减去 9。最后,检查总和是否能被 10 整除。
  4. 示例用法:提供一个示例用法,用户可以输入银行卡号进行验证。

请注意,这个函数只验证卡号的格式是否正确,并不验证卡号是否真实存在。