JS身份证号验证:正则表达式与加权系数详解
创作时间:
作者:
@小白创作中心
JS身份证号验证:正则表达式与加权系数详解
引用
1
来源
1.
https://docs.pingcode.com/baike/3709519
在JavaScript开发中,身份证号验证是一个常见的需求。本文将详细介绍如何通过正则表达式、加权系数和校验码来验证18位的身份证号码,帮助开发者实现准确高效的身份证号验证功能。
一、正则表达式验证基本格式
首先,可以使用正则表达式来验证身份证号码的基本格式。身份证号码的基本格式为18位数字,其中前17位为顺序码,第18位为校验码(可能是数字或字母X)。
function isValidFormat(id) {
const regex = /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12][0-9]|3[01])\d{3}(\d|X)$/;
return regex.test(id);
}
在上面的代码中,正则表达式的结构如下:
^[1-9]:身份证号的第一个数字不能为0。\d{5}:表示接下来的5位数字。(18|19|20)\d{2}:表示年份,支持1800年到2099年。(0[1-9]|1[0-2]):表示月份。(0[1-9]|[12][0-9]|3[01]):表示日期。\d{3}:表示顺序码。(\d|X)$:表示校验码,可以是数字或者字母X。
二、加权系数与校验码验证
身份证号码的最后一位为校验码,它是根据前17位数字按特定算法计算得出的。我们需要通过加权系数和校验码来验证身份证号码的合法性。
1、加权系数
每一位的加权系数分别为:[7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
2、校验码
校验码与余数的对应关系如下:
- 余数为0,对应校验码:1
- 余数为1,对应校验码:0
- 余数为2,对应校验码:X
- 余数为3,对应校验码:9
- 余数为4,对应校验码:8
- 余数为5,对应校验码:7
- 余数为6,对应校验码:6
- 余数为7,对应校验码:5
- 余数为8,对应校验码:4
- 余数为9,对应校验码:3
- 余数为10,对应校验码:2
3、计算校验码
function calculateCheckCode(id) {
const weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
const checkCodes = ['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 remainder = sum % 11;
return checkCodes[remainder];
}
三、综合验证
最后,我们将格式验证和校验码验证相结合,完成身份证号码的完整验证过程。
function validateIDCard(id) {
if (!isValidFormat(id)) {
return false;
}
const calculatedCheckCode = calculateCheckCode(id);
const actualCheckCode = id[17].toUpperCase();
return calculatedCheckCode === actualCheckCode;
}
// 示例
const idCard = "11010519491231002X";
console.log(validateIDCard(idCard)); // 输出: true 或 false
四、总结
通过上述步骤,我们可以有效地验证一个18位的身份证号码。这个过程主要包括两部分:格式验证和校验码验证。在实际应用中,我们可以将这些代码封装成一个函数库,方便在不同项目中进行调用。
这种方法在实际应用中具有很高的准确性和可靠性。希望本文能够对你在JavaScript开发中验证身份证号码有所帮助。
热门推荐
纯电、增程式、混动新能源汽车:区别与优缺点全解析
网络卡顿是怎么回事?
服用非诺贝特期间运动不当,42岁男子突发脑梗!
王老吉保济丸制作技艺入选非遗名录,百年传承守护岭南健康
赵云与诸葛亮:战场上的英勇与智谋的交汇
必看!2025婴童纸品新国标全解析,收藏级避坑指南
“人洗三头,命不长久!”早上洗头和晚上洗头,到底哪个危害更大?
茶叶种类与产地史话
被洋品牌主导的宠粮市场,中国人到底多掏了多少钱?
ESG:驱动光伏行业迈向可持续发展新纪元
长期棉签掏耳朵,男子耳道竟长“蘑菇”!耳屎可不是你想掏就能掏
健身教练入门方法:训练前如何进行健康风险评估
二月二龙抬头,记住:1不洗、2不碰、3不说、4要吃,老传统别忘
举例说明高中毕业可以考什么证?
从孔子到墨子:诸子百家的智慧如何塑造了中国文化
开学了,别让孩子啃面包了,分享15分钟内做好的早餐,好吃又营养
高密度脂蛋白怎么食补
表板蜡的正确使用方法是什么?
从没炒过股票怎么开始,新手炒股前必看的3大建议
汉字探源:年、岁、载、祀的异同
什么中药治疗高血糖
固态硬盘使用exfat还是ntfs格式更好?优缺点对比分析?
探秘电磁波:从传播介质到电磁作用,解锁科学新认知
梦游天姥吟留别
采冰节——“尔滨”发出的冰雪季邀约
如何正确解读验光单,掌握眼睛健康的重要信息
边际效应递减规律详解
素食者更健康更长寿吗?
人生进入了迷茫阶段怎么办
每天只跑3公里,有锻炼效果吗?