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开发中验证身份证号码有所帮助。
热门推荐
崩坏:星穹铁道角色解析——符玄
经合组织《教育概览》:日本学前及高等教育费用的家庭负担较重
日本高中教育制度:从基础教育到留学指南
春节消费热力全开:小生意带动地方经济
春节为什么要买桃花 桃花有什么象征意义
“花”式迎新春,应景“年味”浓!
片仔癀护肝新姿势,你get了吗?
糖尿病患者的福音:低GI谷物全解析
GI与GL是什么?低GI食物怎么选?
任正非的成功密码:自我肯定的力量
任正非:成功不靠别人承认,你认同吗?
任正非:从技术员到商业领袖的逆袭之路
任正非的“萝卜章”:华为成功的自我激励之道
肩周炎康复操,每天十分钟
大熊猫最爱吃的10种食物
大熊猫最爱吃的10种食物
及时回应与诚恳道歉:挽回客户信任的关键策略
台湾十大必游景点:自然与文化的完美融合
日本校园霸凌创历史新高:每天超1800起,近30万学生选择逃学
道家真气:改善心理健康的古老智慧
道家真气:道教修炼的核心秘籍
《黄帝内经》推荐:真气养生法
藏红花版西班牙海鲜饭,米其林大厨推荐!
藏红花抗癌新发现:从实验室到临床的科学探索
甘伯宗藏红花:源自伊朗的养生臻品
秋冬种藏红花,这些关键点你都掌握了吗?
递出“最萌”城市名片,都江堰探索大熊猫品牌建设
大熊猫国家公园:让国宝家园更加美丽
十年之约再启程:穿越大熊猫爱情走廊,探索生态保护之路
大熊猫科普馆即将建成,"大熊猫生态谷"建设稳步推进