【揭秘正则表达式】身份证号码验证的奥秘与技巧

发布时间:2025-05-23 00:27:00

身份证号码简介

身份证号码是每其中国公平易近的重要身份标识,由18位数字构成。它包含了丰富的团体信息,如地区、出诞辰期、次序码跟校验码。在编程中,常常须要对身份证号码停止验证,以确保数据的正确性。

身份证号码构造

身份证号码由以下部分构成:

  1. 地点码(前六位):表示编码东西常住户口地点县(市、旗、区)的行政区划代码。
  2. 出诞辰期码(第七位至第十四位):表示编码东西出生的年、月、日。
  3. 次序码(第十五位至第十七位):表示在同一地点码所标识的地区范畴内,对同年、同月、同日出生的人编定的次序号,其中奇数分配给男性,偶数分配给女性。
  4. 校验码(第十八位):由号码编制单位按同一的公式打算出来的,用于验证身份证号码的正确性。

正则表达式基本

正则表达式是一种富强的字符串婚配东西,可能用来验证身份证号码的格局。以下是一些常用的正则表达式语法:

  • .:婚配除换行符以外的恣意字符。
  • d:婚配恣意数字。
  • w:婚配恣意字母数字或下划线。
  • ^:婚配字符串的开端地位。
  • $:婚配字符串的结束地位。
  • *:婚配前面的子表达式零次或多次。
  • +:婚配前面的子表达式一次或多次。
  • ?:婚配前面的子表达式零次或一次。

身份证号码正则表达式

以下是一个用于验证身份证号码的正则表达式:

^[1-9]d5(18|19|20)?d2(0[1-9]|1[0-2])(0[1-9]|[12]d|3[01])d3(dX|x)$

阐明:

  • ^:婚配字符串的开端地位。
  • [1-9]:第一位数字必须是1到9之间的数字。
  • d5:接上去五位是恣意数字。
  • (18|19|20)?:出生年份的前两位,可能是18、19或20(可选)。
  • d2:婚配年份码的后两位。
  • (0[1-9]|1[0-2]):婚配月份,从01到12。
  • (0[1-9]|[12]d|3[01]):婚配日期,从01到31。
  • d3:婚配次序码。
  • (dX|x):婚配最后一位校验码,可能是数字或大年夜写字母X。
  • $:婚配字符串的结束地位。

JavaScript示例代码

以下是一个利用JavaScript实现的身份证号验证示例:

function isValidIdCard(idCard) {
  const regex = /^[1-9]d5(18|19|20)?d2(0[1-9]|1[0-2])(0[1-9]|[12]d|3[01])d3(dX|x)$/;
  return regex.test(idCard);
}

// 测试
console.log(isValidIdCard('11010519491231002X')); // 正确的身份证号码
console.log(isValidIdCard('123456789012345678')); // 错误的身份证号码

总结

经由过程利用正则表达式,我们可能轻松地验证身份证号码的格局,确保数据的正确性。在现实利用中,我们可能根据须要调剂正则表达式,以满意差其余验证须要。