揭秘JS正则魅力:轻松掌握身份证号验证技巧

引言
正则表达式(Regular Expression,简称Regex)在JavaScript中是一种强大的文本处理工具,它允许开发者快速、高效地进行字符串的匹配、查找、替换等操作。在本文中,我们将探讨如何利用正则表达式来验证身份证号码的有效性,并深入了解身份证号码的构成及校验算法。
身份证号码概述
身份证号码是公民身份的法定标识,由十七位数字本体码和一位数字校验码组成。具体构成如下:
地址码
:前六位数字,表示编码对象常住户口所在县(市、旗、区)的行政区划代码。
出生日期码
:第七位至第十四位数字,表示编码对象出生的年、月、日。
顺序码
:第十五位至第十七位数字,表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号。
校验码
:第十八位数字,作为尾号的校验码。
正则表达式验证身份证号码
以下是一个简单的正则表达式,用于验证身份证号码的有效性:
function validateIDCard(idCard) {
var reg = /^[1-9]\d{5}(18|19|20)?\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i;
return reg.test(idCard);
}
该正则表达式的工作原理如下:
^[1-9]
:匹配第一位数字,不能为0。
\d{5}
:匹配接下来的五位数字,表示地址码。
(18|19|20)?
:可选地匹配18、19或20,表示年份。
\d{2}
:匹配两位数字,表示月份。
(0[1-9]|1[0-2])
:匹配月份,可以是01至12。
(0[1-9]|[12]\d|3[01])
:匹配日期,可以是01至31。
\d{3}
:匹配三位数字,表示顺序码。
(\d|X)
:匹配最后一位数字或大写字母X,表示校验码。
$
:表示字符串的结束。
身份证号码校验算法
身份证号码的校验算法如下:
将身份证号码前17位数字分别乘以不同的系数。从第一位到第十七位的系数分别为:7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2。
将这17位数字和系数相乘的结果相加。
将相加后的结果除以11,得到余数。
根据余数,通过查表得到相应的校验码。
以下是一个实现身份证号码校验算法的JavaScript函数:
function checkIDCard(idCard) {
var factors = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
var codes = [‘1’, ‘0’, ‘X’, ‘9’, ‘8’, ‘7’, ‘6’, ‘5’, ‘4’, ‘3’, ‘2’];
var sum = 0;
for (var i = 0; i < 17; i++) { sum += idCard[i] * factors[i]; } var mod = sum % 11; return codes[mod]; } 总结 通过本文的学习,我们了解了身份证号码的构成和校验算法,并掌握了如何使用正则表达式验证身份证号码的有效性。在实际开发过程中,我们可以根据需求灵活运用这些知识,提高代码的健壮性和易用性。