在线网站代理浏览企业培训计划方案
验证身份证号码时,可以使用 JavaScript 进行格式检查和校验位的计算。以下是一个基本的验证身份证号码的示例,包括中国身份证号码的18位和15位格式的验证。
中国身份证号码格式
-
18位身份证号码:
- 前17位为数字,最后一位为数字或字母X。
- 计算校验位的方法是根据前17位数字进行特定的加权计算。
-
15位身份证号码:
- 15位为数字。
示例代码
下面是一个 JavaScript 函数,用于验证身份证号码:
function validateIDCard(id) {// 15位身份证正则表达式const reg15 = /^\d{15}$/;// 18位身份证正则表达式const reg18 = /^\d{17}[\dX]$/i;if (reg15.test(id)) {return validate15IDCard(id);} else if (reg18.test(id)) {return validate18IDCard(id);} else {return false; // 格式不正确}
}function validate15IDCard(id) {// 将15位身份证转换为18位let id17 = id.substring(0, 6) + '19' + id.substring(6);return validate18IDCard(id17);
}function validate18IDCard(id) {// 校验位权重const weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];// 校验位对应值const checkDigits = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];let sum = 0;for (let i = 0; i < 17; i++) {sum += parseInt(id[i]) * weights[i]; // 加权求和}const checkIndex = sum % 11; // 计算校验位索引const checkDigit = checkDigits[checkIndex]; // 获取校验位return id[17].toUpperCase() === checkDigit; // 比对校验位
}// 示例用法
const idCard = "123456789012345"; // 输入的身份证号码
if (validateIDCard(idCard)) {console.log("身份证号码有效");
} else {console.log("身份证号码无效");
}
说明
-
正则表达式:
reg15
用于匹配15位身份证号码。reg18
用于匹配18位身份证号码(最后一位可以是数字或字母X)。
-
验证逻辑:
- 如果输入的是15位身份证号码,使用
validate15IDCard
函数将其转换为18位并进行验证。 validate18IDCard
函数计算前17位的加权和,并根据计算结果获取校验位,最后与输入的校验位进行比较。
- 如果输入的是15位身份证号码,使用
-
示例用法:
- 可以替换
idCard
的值进行测试,验证身份证号码的有效性。
- 可以替换