博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
身份证号码的正则表达式及验证详解(JavaScript,Regex)
阅读量:6940 次
发布时间:2019-06-27

本文共 691 字,大约阅读时间需要 2 分钟。

hot3.png

简言

在做用户实名验证时,常会用到身份证号码的正则表达式及校验方案。本文列举了两种验证方案,大家可以根据自己的项目实际情况,选择适合的方案。

idcard-check

身份证号码说明

居民身份证号码,正确、正式的称谓应该是“公民身份号码”。根据【中华人民共和国国家标准 GB 11643-1999】中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。

以北京市朝阳区一女性身份证号码为例,身份证号码所表示的含义如下图所示:

身份证号码含义解析

注:该身份证号码来源于国标【GB 11643-1999】。

下面我们就从零开始完成一个完整的身份证号码校验过程。

方案1 (简单)

1.1 分部规则

我们首先提出方案1,并分步做如下规则定义:

1.1.1 地址码规则:

  • 地址码长6位
  • 以数字1-9开头
  • 后5位为0-9的数字

根据以上规则,写出地址码的正则表达式: /^[1-9]\d{5}/

1.1.2 年份码规则:

  • 年份码长4位
  • 以数字18,19或20开头
  • 剩余两位为0-9的数字

根据以上规则,写出年份码的正则表达式: /(18|19|20)\d{2}/。如果不需要18开头的年份,可以去掉18。

1.1.3 月份码规则:

  • 月份码长2位
  • 第一位数字为0,第二位数字为1-9
  • 或者第一位数字为1,第二位数字为0-2

根据以上规则,写出月份码的正则表达式: /((0[1-9])|(1[0-2]))/

转载于:https://my.oschina.net/u/3611008/blog/1806840

你可能感兴趣的文章
JavaScript之JSON
查看>>
linux剪切拷贝
查看>>
isinstance, type, issubclass
查看>>
[扫雷][游戏] 交互*2
查看>>
Python函数
查看>>
python 开发技巧(4)-- 用PyCharm实用技巧(我自己常用的)
查看>>
Path Sum II
查看>>
[转载]STM32高级定时器(TIM1和TIM8)、通用定时器(TIMx) 、 基本定时器(TIM6和TIM7)的区别...
查看>>
初入前端2
查看>>
python ----列表、字符串、元组之间转换小结
查看>>
python基础之socket编程
查看>>
NYOJ 45( 分治,大数)
查看>>
网络语音技术
查看>>
【酷熊科技】工作积累 ----------- C#自动添加using引用命名空间
查看>>
通达信公式-涨幅限制
查看>>
VMware-Linux(RedHat 6.7)增加数据库使用空间(Linux&Linux LVM)
查看>>
左神算法进阶班3_1构造数组的MaxTree
查看>>
SQL Server中的锁类型及用法(转载)
查看>>
CodeVS 1008 选数(DFS)
查看>>
SQL Server日常积累
查看>>