身份证号码

正则表达式-身份证号码验证

核能气质少年 提交于 2020-01-25 05:01:35
身份证号码验证,包含两代身份证,第一代和第二代身份证 第一代身份证15位,其编码规则顺序从左至右依次为6位数字地址码,6位数字出生年份后两位及日期,3位数字顺序码。 格式:^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$ 正则表达式分解如下: [1-9]\d{5}:前六位地区,非0开头 \d{2} :出生年份后两位00-99 ((0[1-9])|(10|11|12)):月份,01-12月 (([0-2][1-9])|10|20|30|31):日期,01-31天 \d{3}:顺序码三位,没有校验码 第二代身份证18位,其编码规则顺序从左至右依次为6位数字地址码,8位数字出生年份日期码,3位数字顺序码,1位数字校验码(X有时会出现): 格式: ^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$ 正则表达式分解如下: [1-9]\d{5} :前六位地区,非0开头 (18|19|([23]\d))\d{2}:出身年份,覆盖范围为 1800-3999 年 ((0[1-9])|(10|11|12)):月份,01-12月 (([0-2][1-9])|10|20|30|31)

身份证号码的编排规则

旧城冷巷雨未停 提交于 2020-01-13 07:47:04
作者:知乎用户 链接:https://www.zhihu.com/question/19823489/answer/13074347 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 身份证号码中这些数字是怎样排列的,每个数字表示什么意思呢?下面就让我们一起来探索其中的规律吧!新的身份证号码是由18位数字组成的,它们分别表示: (1)前1、2位数字表示:所在省份的代码; (2)第3、4位数字表示:所在城市的代码; (3)第5、6位数字表示:所在区县的代码; (4)第7~14位数字表示:出生年、月、日; (5)第15、16位数字表示:所在地的派出所的代码; (6)第17位数字表示性别:奇数表示男性,偶数表示女性; (7)第18位数字是校检码:也有的说是个人信息码,一般是随计算机的随机产生, 用来检验身份证的正确性。校检码可以是0~9的数字,有时也用x表示。 15位的身份证号 dddddd yymmdd xx p 18位的身份证号 dddddd yyyymmdd xx p y 其中dddddd为地址码(省地县三级)18位中的和15位中的不完全相同 yyyymmdd yymmdd 为出生年月日 xx顺号类编码 p性别 18位中末尾的y为校验码,将前17位的ascii码值经位移、异或运算结果不在0-9的令其为x

15位身份证号码转18位算法

房东的猫 提交于 2019-12-26 07:09:57
身份证号码15位升18位 身份证18位验证 18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》中做了明确的规定。 GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称"社会保障号码"更名为"公民身份号码",另外GB11643-1999《公民身份号码》从实施之日起代替GB11643-1989。GB11643-1999《公民身份号码》主要内容如下: 一、范围 该标准规定了公民身份号码的编码对象、号码的结构和表现形式,使每个编码对象获得一个唯一的、不变的法定号码。 二、编码对象 公民身份号码的编码对象是具有中华人民共和国国籍的公民。 三、号码的结构和表示形式 1、号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。 2、地址码 表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。 3、出生日期码 表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。 4、顺序码 表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。 5、校验码 (1

PHP根据身份证号码验证、获取星座、生肖和性别函数

泪湿孤枕 提交于 2019-12-20 07:09:21
首先介绍一下身份证含义 新的18位身份证号码各位的含义: 1-2位省、自治区、直辖市代码; 3-4位地级市、盟、自治州代码; 5-6位县、县级市、区代码; 7-14位出生年月日,比如19670401代表1967年4月1日; 15-17位为顺序号,其中17位男为单数,女为双数; 18位为校验码,0-9和X,由公式随机产生。 举例: 130503 19670401 0012这个身份证号的含义: 13为河北,05为邢台,03为桥西区,出生日期为1967年4月1日,顺序号为001,2为验证码。 15位身份证号码各位的含义: 1-2位省、自治区、直辖市代码; 3-4位地级市、盟、自治州代码; 5-6位县、县级市、区代码; 7-12位出生年月日,比如670401代表1967年4月1日,这是和18位号码的第一个区别; 13-15位为顺序号,其中15位男为单数,女为双数; 与18位身份证号的第二个区别:没有最后一位的验证码。 举例: 130503 670401 001的含义; 13为河北,05为邢台,03为桥西区,出生日期为1967年4月1日,顺序号为001。 居民身份证是国家法定的证明公民个人身份的证件。为了堵塞和制止假居民身份证的流通和使用,在查验和核查居民身份证时可掌握以下几个要点:   一、居民身份证的整体识别   1、居民身份证规格为88mm×60mm,四角呈圆弧状。式样为聚脂薄膜密封

php 验证身份证号码

最后都变了- 提交于 2019-12-18 05:21:30
身份证号码的结构 身份证号码是特征组合码,由17位数字本体码和一位校验码组成。 排列顺序从左至右依此为: 六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码 。 地址码(前六位数) 表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定运行。 出生日期码(第七位至十四位) 表示编码对象出生的年、月、日,按GB/T7408的规定运行。年、月、日代码之间不用分隔符。 顺序码(第十五位至十七位) 表示在同一地址码所标识的区域范围,对同年、同月、同日出生的人编定的顺序号,顺序码奇数分配给男性。偶数分配给女性。 校验码(第十八位数) 1.十七位数字本体码加权求和公式 S= SUM(Ai * Wi), i=0, ... , 16, 先对前17位数字的权求和。 Ai:表示第i位置上的身份证号码数字值 Wi:表示第i位置上的加权因子 Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 2. 计算模 Y = mod(S, 11) 3.通过模得到相应的校验码 Y: 0 1 2 3 4 5 6 7 8 9 10 校验码: 1 0 X 9 8 7 6 5 4 3 2 验证身份证号码方法: <? php function checkIdCard($idcard){ // 仅仅能是18位 if(strlen($idcard)!=18){

Java 身份证号码验证

走远了吗. 提交于 2019-12-18 03:06:10
身份证号码验证   1、号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码   2、地址码(前六位数)表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行   3、出生日期码(第七位至十四位)表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符   4、顺序码(第十五位至十七位)表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号, 顺序码的奇数分配给男性,偶数分配给女性   5、校验码(第十八位数)   (1)十七位数字本体码加权求和公式 S = Sum(iDCardNo * wf), i = 0, ... , 16 ,先对前17位数字的权求和 iDCardNo:表示第i位置上的身份证号码数字值 Wi:表示第i位置上的加权因子 wf: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2   (2)计算模 Y = mod(S, 11) (3)通过模得到对应的校验码 Y: 0 1 2 3 4 5 6 7 8 9 10 校验码: 1 0 X 9 8 7 6 5 4 3 2 import org.junit.Test; import java.text

身份证最后一位校验算法-(ISO 7064:1983.MOD 11-2)

China☆狼群 提交于 2019-12-12 07:42:29
根据《中华人民共和国国家标准GB 11643-1999》中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。顺序码的奇数分给男性,偶数分给女性。校验码是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。 第二代身份证号码编排规则 方法/步骤 1 前1、2位数字表示:所在省(直辖市、自治区)的代码; 第二代身份证号码编排规则 2 第3、4位数字表示:所在地级市(自治州)的代码; 第二代身份证号码编排规则 3 第5、6位数字表示:所在区(县、自治县、县级市)的代码; 第二代身份证号码编排规则 4 第7—14位数字表示:出生年、月、日; 第二代身份证号码编排规则 5 第15、16位数字表示:所在地的派出所的代码; 第二代身份证号码编排规则 6 第17位数字表示性别:奇数表示男性,偶数表示女性; 第二代身份证号码编排规则 7 第18位数字是校检码:也有的说是个人信息码,不是随计算机的随机产生,它是 用来检验身份证的正确性。校检码可以是0—9的数字,有时也用x表示。作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号

JS验证身份证号码是否合法

时光怂恿深爱的人放手 提交于 2019-12-11 18:09:47
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 现在经常会遇到让输入身份证号码的需求,那么我们应该如何验证身份证号码的合法性呢?今天我们来说一说验证的方法。 function checkIdcard(num){ num = num.toUpperCase(); //身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X。 if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))) { alert('输入的身份证号长度不对,或者号码不符合规定!\n15位号码应全为数字,18位号码末位可以为数字或X。'); return false; } //校验位按照ISO 7064:1983.MOD 11-2的规定生成,X可以认为是数字10。 //下面分别分析出生日期和校验位 var len, re; len = num.length; if (len == 15) { re = new RegExp(/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/); var arrSplit = num.match(re); //检查生日日期是否正确 var dtmBirth = new Date('19' + arrSplit[2] + '/' +

身份证号码验证算法

女生的网名这么多〃 提交于 2019-12-11 18:07:10
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 做项目的时候需要对拿到的数据进行“清洗”,比如剔除一些不可能存在的身份证号码。查阅了网上的身份证号码验证算法,自己也总结一下。 (一)18身份证号码的结构   公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。 1、地址码    表示编码对象常住户口所在县(市、旗、区)的行政区域划分代码,按GB/T2260的规定执行。 2、出生日期码   表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。 3、顺序码    表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号, 顺序码的奇数分配给男性,偶数分配给女性 。 4、校验码计算步骤 (1)十七位数字本体码加权求和公式 S = Sum(Ai * Wi), i = 0, … , 16 ,先对前17位数字的权求和 Ai:表示第i位置上的身份证号码数字值(0~9) Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (表示第i位置上的加权因子) (2)计算模    Y = mod(S, 11) (3)根据模,查找得到对应的校验码    Y: 0 1 2 3 4 5 6 7 8 9 10  

身份证号码算法

落爺英雄遲暮 提交于 2019-12-11 18:04:08
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 18身份证号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。 1、地址码 表示编码对象常住户口所在县(市、旗、区)的行政区域划分代码,按GB/T2260的规定执行。 2、出生日期码 表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。 3、顺序码 表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。 4、校验码计算步骤 (1)十七位数字本体码加权求和公式 S = Sum(Ai * Wi), i = 0, … , 16 ,先对前 17 位数字的权求和 Ai:表示第i位置上的身份证号码数字值(0~9) Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (表示第 i 位置上的加权因子) (2)计算模 Y = mod(S, 11) (3)根据模,查找得到对应的校验码 Y: 0 1 2 3 4 5 6 7 8 9 10 校验码: 1 0 X 9 8 7 6 5 4 3 2 根据17位数字本体码获取最后一位校验码程序实例 public class Id18 { int[]