身份证,作为我国公民的重要身份证明,承载着大量的个人信息。在日常开发中,我们经常需要验证身份证的有效性,并从中提取相关信息。本文将带你深入了解身份证的奥秘,并教你如何使用JavaScript轻松实现身份证验证与信息提取。
身份证的基本结构
身份证号码由18位数字组成,具体结构如下:
- 前6位为行政区划代码,表示身份证持有人的户籍所在地。
- 接下来的8位为出生日期码,格式为YYYYMMDD。
- 再接下来的3位为顺序码,其中奇数分配给男性,偶数分配给女性。
- 最后一位为校验码,用于验证身份证号码的正确性。
身份证验证
身份证验证主要包括两部分:校验码验证和出生日期验证。
校验码验证
身份证校验码的计算方法如下:
- 将身份证号码前17位分别乘以不同的系数:[7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]。
- 将这17个乘积相加。
- 将相加后的结果除以11,得到余数。
- 根据余数,通过查表得到相应的校验码。
以下是一个JavaScript函数,用于验证身份证号码的校验码:
function checkIdCardCode(idCard) {
const codes = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];
const coefficients = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
let sum = 0;
for (let i = 0; i < 17; i++) {
sum += idCard[i] * coefficients[i];
}
const remainder = sum % 11;
return codes[remainder];
}
// 示例
console.log(checkIdCardCode('11010519491231002X')); // 输出:X
出生日期验证
出生日期验证可以通过JavaScript的Date对象来实现。以下是一个JavaScript函数,用于验证身份证号码的出生日期:
function checkBirthDate(idCard) {
const birthDate = idCard.substring(6, 14);
const year = parseInt(birthDate.substring(0, 4), 10);
const month = parseInt(birthDate.substring(4, 6), 10);
const day = parseInt(birthDate.substring(6, 8), 10);
const date = new Date(year, month - 1, day);
return date.getFullYear() === year && date.getMonth() === month - 1 && date.getDate() === day;
}
// 示例
console.log(checkBirthDate('11010519491231002X')); // 输出:true
身份证信息提取
身份证信息提取主要包括以下内容:
- 性别
- 出生日期
- 户籍所在地
以下是一个JavaScript函数,用于提取身份证信息:
function extractIdCardInfo(idCard) {
const gender = idCard[16] % 2 === 0 ? '女' : '男';
const birthDate = idCard.substring(6, 14);
const areaCode = idCard.substring(0, 6);
return {
gender,
birthDate,
areaCode
};
}
// 示例
console.log(extractIdCardInfo('11010519491231002X')); // 输出:{ gender: '男', birthDate: '19491231', areaCode: '110105' }
通过以上方法,你可以轻松地使用JavaScript验证身份证号码的有效性,并从中提取相关信息。在实际开发中,这些功能可以帮助你更好地处理与身份证相关的业务。
