揭秘身份证号验证:掌握JavaScript正则表达式,轻松识别真伪!

身份证号是每个中国公民的重要身份证明,其验证通常需要确保号码的格式正确、长度正确以及校验码正确。在JavaScript中,我们可以使用正则表达式来验证身份证号的真伪。本文将详细介绍如何使用JavaScript正则表达式来验证身份证号。
身份证号的组成
中国公民的身份证号由18位数字组成,具体如下:
前6位为行政区划代码。
接下来的8位为出生年月日(年两位,月两位,日两位)。
然后是3位顺序码,用于区分同一地区同一日期出生的人。
最后一位为校验码。
正则表达式验证身份证号
身份证号的验证可以分为以下几个步骤:
长度验证
:确保身份证号长度为18位。
格式验证
:验证身份证号的格式是否符合规范。
校验码验证
:计算校验码,并与身份证号最后一位进行比较。
下面是一个简单的正则表达式,用于验证身份证号的长度和格式:
/^\d{17}[\dX]$/i
这个正则表达式的含义如下:
^
:字符串开始。
\d{17}
:连续的17位数字。
[\dX]
:最后一位是数字或字母X(校验码)。
$
:字符串结束。
i
:不区分大小写。
代码示例
以下是一个使用JavaScript正则表达式验证身份证号的完整示例:
function validateIDCard(idCard) {
// 验证长度和格式
const regex = /^\d{17}[\dX]$/i;
if (!regex.test(idCard)) {
return false;
}

// 计算校验码
const coefficients = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]; // 系数
const checksums = [‘1’, ‘0’, ‘X’, ‘9’, ‘8’, ‘7’, ‘6’, ‘5’, ‘4’, ‘3’, ‘2’]; // 校验码
let sum = 0;

for (let i = 0; i < 17; i++) { sum += parseInt(idCard[i]) * coefficients[i]; } // 获取校验码 const calculatedChecksum = checksums[sum % 11]; // 比较校验码 return calculatedChecksum === idCard[17].toUpperCase(); } // 测试 console.log(validateIDCard('11010519491231002X')); // true console.log(validateIDCard('123456789012345678')); // false 在这个示例中, validateIDCard 函数首先使用正则表达式验证身份证号的长度和格式。如果格式正确,它会计算校验码,并与身份证号的最后一位进行比较。如果校验码匹配,则身份证号有效。 通过以上步骤,我们可以轻松地使用JavaScript正则表达式来验证身份证号的真伪。