js实现身份证号码验证的简单实例



function validateIDCard(id) {
    // 身份证号码长度校验
    if (id.length !== 18) {
        return false;
    }

    // 出生日期校验
    const birthYear = id.substring(6, 10);
    const birthMonth = id.substring(10, 12);
    const birthDay = id.substring(12, 14);
    const birthDate = new Date(`${birthYear}-${birthMonth}-${birthDay}`);

    // 校验日期是否有效
    if (birthDate.getFullYear() !== parseInt(birthYear, 10) ||
        birthDate.getMonth() + 1 !== parseInt(birthMonth, 10) ||
        birthDate.getDate() !== parseInt(birthDay, 10)) {
        return false;
    }

    // 校验最后一位校验码
    const factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
    const parity = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
    let sum = 0;
    for (let i = 0; i < 17; i++) {
        sum += id[i] * factor[i];
    }
    const mod = sum % 11;
    return parity[mod] === id[17].toUpperCase();
}

// 示例
console.log(validateIDCard('11010519491231002X')); // true
console.log(validateIDCard('123456789012345678')); // false

这段代码提供了一个简单的身份证号码验证的JavaScript实现。它首先检查身份证号码的长度是否为18位,然后验证出生日期是否合法(即日期是否真实存在),最后通过计算校验码来验证身份证号码的最后一位是否正确。注意,这里假设输入的身份证号码都是18位的,对于15位的老身份证号码未做处理。