身份证号码的正则表达式及验证详解(JavaScript,Regex)

大神们,打扰一下,身份证号码的正则表达式及验证详解(JavaScript,Regex)
最新回答
我不会写诗

2025-03-30 05:16:29

在进行用户实名验证时,常需利用身份证号码的正则表达式及校验方案。本文提供两种方案,使用者可依据项目需求选择适用方案。

身份证号码由十七位数字构成,包括地址码、出生日期码、顺序码与校验码。以北京市朝阳区女性身份证号码为例,其结构如下图所示。

方案1采用分步验证方法,设定如下规则:

1.1 地址码规则:正则表达式为/^[1-9]\d{5}/。

1.2 年份码规则:正则表达式为/(18|19|20)\d{2}/。若无需18开头年份,可去除18。

1.3 月份码规则:正则表达式为/((0[1-9])|(1[0-2]))/。

1.4 日期码规则:正则表达式为/(([0-2][1-9])|10|20|30|31)/。

1.5 顺序码规则:正则表达式为/\d{3}/。

1.6 校验码规则:正则表达式为/[0-9Xx]/。

方案1正则表达式整合如下,并附有测试程序。

方案2则在方案1基础上,引入省级地址码校验,提升验证准确性。并提供出生日期码校验、校验码校验的函数与测试程序。校验码计算较为复杂,公式如下所示:

公式:其中 ai 表示身份证本体码的第 i 位值,Wi 表示第 i 位的加权因子值。

校验码计算程序与测试代码如下。

方案2的整体代码整合如下。

以上内容系三胖对身份证号码验证的理解与分析,如有不妥之处,请指正。