在信息化时代,身份证号作为个人身份的重要标识,其真伪校验显得尤为重要。JavaScript(JS)作为前端开发中常用的编程语言,其身份证号校验功能更是不可或缺。本文将详细解析JS身份证号校验的原理,并提供实用的代码示例,帮助你轻松掌握身份证号校验全攻略,避免常见错误,快速识别真伪!
一、身份证号的基本结构
我国大陆地区居民身份证号由18位数字组成,具体结构如下:
- 前6位为行政区划代码,表示身份证持有人的户籍所在地。
- 接下来的8位为出生日期码,格式为YYYYMMDD。
- 再接下来的3位为顺序码,其中奇数分配给男性,偶数分配给女性。
- 最后一位为校验码,用于验证身份证号的正确性。
二、身份证号校验原理
身份证号校验码的计算方法如下:
- 将身份证号前17位数字分别乘以不同的系数(从左至右依次为:7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2)。
- 将乘积相加,得到总和。
- 将总和除以11,得到余数。
- 根据余数,通过查表得到对应的校验码。
三、JS身份证号校验代码示例
以下是一个简单的JS身份证号校验函数,用于验证身份证号的真伪:
function checkIdCard(idCard) {
// 定义系数数组
const factors = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
// 定义校验码数组
const checkCode = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
// 验证身份证号长度
if (idCard.length !== 18) {
return false;
}
// 验证出生日期格式
if (!/^\d{4}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])$/.test(idCard.substring(6, 14))) {
return false;
}
// 计算校验码
let sum = 0;
for (let i = 0; i < 17; i++) {
sum += parseInt(idCard[i]) * factors[i];
}
// 获取校验码
const checkCodeIndex = sum % 11;
const checkCodeValue = checkCode[checkCodeIndex];
// 验证校验码
return idCard[17] === checkCodeValue;
}
// 测试
console.log(checkIdCard('11010519880605001X')); // true
console.log(checkIdCard('110105198806050011')); // false
四、常见错误及注意事项
- 身份证号前6位行政区划代码可能存在错误,需确保其准确性。
- 出生日期格式可能存在错误,请确保格式正确。
- 身份证号长度可能存在错误,需确保为18位。
- 校验码计算过程中,请注意数字与系数的乘积,避免出现错误。
通过以上攻略,相信你已经掌握了JS身份证号校验的技巧。在实际应用中,请务必注意以上常见错误,确保校验结果的准确性。祝你在前端开发中一切顺利!
