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开发中验证身份证号码有所帮助。
热门推荐
乡镇劳动保障工作概述及挑战探究
东风大街:新中国汽车工业的亲历者
C919即将量产:国产大飞机的材料革命
小红书舆情处理的N个技巧
如何种植玉米?玉米盆栽种植全图解
什么是铜芯电力电缆YJV22电缆?YJV22电缆有哪些特点?
MBR膜技术,超滤膜在现代水处理中的应用与优势
注意!牙齿每天出血是什么病征兆?5大常见原因了解,这些病症可能正在敲门!
如何使用POWER-Z KM002C检测充电器的快充协议
2025年干部队伍建设的六大趋势
汗从哪里出,病从哪里来?这几个部位出汗可能是疾病信号
软件工程与计算机科学:核心区别与联系分析
碘佛醇:医学影像的得力助手
中医与命理:中草药调理五行旺衰全攻略
解锁文档版本控制:保障知识库信息的 “保鲜秘籍”
C语言如何实现重复输入(cin)
沈阳二手房价格连续12个月下跌,2024年买二手房很便宜
政策落地:自闭症家庭的春天来了吗?
中国化工崛起真相:产能狂飙却被卡脖子?
退休老兵重走长征路 4年骑行1.5万余公里
寂静岭2结局解析:詹姆斯的选择与心理挣扎
如何轻松查找你的学历信息?一文详解学信网查询攻略
水库大坝安全监测系统:技术创新与安全保障
生物发酵罐:生物技术领域的核心设备与应用解析
丁螺环酮:血清素受体部分激动剂,有效处理焦虑
10 部反派大获全胜的科幻电影
光伏产业的崛起:探索光伏类股票的投资价值与未来趋势
小米SU7车主反映辅助驾驶系统故障 官方回应引发质疑
污水厂管控系统:智能化管理助力污水处理效率提升
广电副卡怎么办理?这份详细申请指南请收好