身份证号码正则表达式及校验方法
身份证15位编码规则:dddddd yymmdd xx p
dddddd:6位地区编码
yymmdd: 出生年(两位年)月日,如:910215
xx: 顺序编码,系统产生,无法确定
p: 性别,奇数为男,偶数为女
身份证18位编码规则:dddddd yyyymmdd xxx y
dddddd:6位地区编码
yyyymmdd: 出生年(四位年)月日,如:19910215
xxx:顺序编码,系统产生,无法确定,奇数为男,偶数为女
y: 校验码,该位数值可通过前17位计算获得
前17位号码加权因子为 Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ]
验证位 Y = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]
如果验证码恰好是10,为了保证身份证是十八位,那么第十八位将用X来代替
校验位计算公式:Y_P = mod( ∑(Ai×Wi),11 )
i为身份证号码1…17 位; Y_P为校验码Y所在校验码数组位置
function validateIdCard(idCard){//15位和18位身份证号码的正则表达式var regIdCard=/^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/;//如果通过该验证,说明身份证格式正确,但准确性还需计算if(regIdCard.test(idCard)){if(idCard.length==18){var idCardWi=new Array( 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ); //将前17位加权因子保存在数组里var idCardY=new Array( 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ); //这是除以11后,可能产生的11位余数、验证码,也保存成数组var idCardWiSum=0; //用来保存前17位各自乖以加权因子后的总和for(var i=0;i<17;i++){idCardWiSum+=idCard.substring(i,i+1)*idCardWi[i];}var idCardMod=idCardWiSum%11;//计算出校验码所在数组的位置var idCardLast=idCard.substring(17);//得到最后一位身份证号码//如果等于2,则说明校验码是10,身份证号码最后一位应该是Xif(idCardMod==2){if(idCardLast=="X"||idCardLast=="x"){alert("恭喜通过验证啦!");}else{alert("身份证号码错误!");}}else{//用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码if(idCardLast==idCardY[idCardMod]){alert("恭喜通过验证啦!");}else{alert("身份证号码错误!");}}} }else{alert("身份证格式不正确!");}
}
身份证号码正则表达式及校验方法相关推荐
- 身份证号码的严格校验(非正则)
文章目录 前言 序言 一.身份证号码介绍 1.身份证号码组成 2.省份证号码中的名词解释 1.区域代码(地址码) 2.生日 3.顺序码 4.校验码 总结 二.校验码计算 1.公式拆解 2.运算 三.实 ...
- 15位、18位身份证号码正则表达式
身份证正则表达式 在项目中遇到身份证号码验证,百度了一些资料,太简单的和太复杂的pass,综合了一些案例,取长补短,形成了个折中版本的,正则表达式如下: var reg =/(^[1-9]\d{5}( ...
- 身份证号码编码方法及校验算法
身份证号码编码方法及校验算法 1 身份证号码的字段构成: 地址码 身份证前六位,表示户口所在县(市.旗.区)的行政区划代码. 生日码 身份证第七至第十四位,表示出生的年.月.日. 顺序码 身份证十五到 ...
- 身份证号码的合法性校验
javascript版本的 身份证号码的合法性校验 /** * 检验身份证号码 * 15位:ddddddyymmddxxp * 18位:ddddddyyyymmddxxxy * @param card ...
- 最新js验证手机号码、电话号码、身份证号码正则表达式代码
js验证手机号码.电话号码.身份证号码正则表达式 手机号码正则表达式验证 固定电话号码正则表达式 身份证正则 手机号码正则表达式验证 function checkPhone(){ var phone ...
- java身份证号码正则表达式校验(含最后一位的校验值规则)
这里是python版本的: https://yanwenjing.blog.csdn.net/article/details/108210623 请仔细阅读注释 点击这里下载判断身份证号码的小工具 身 ...
- java 身份证号码正则表达式校验
/*** 身份证号码验证*/ public class IdentityUtils {public static boolean isIDNumber(String IDNumber) {if (ID ...
- python身份证号码正则表达式校验(含最后一位的校验值规则)
这里是java版本的:https://yanwenjing.blog.csdn.net/article/details/76066985 请仔细阅读注释 点击这里下载判断身份证号码的小工具 身份证号码 ...
- 身份证号码正则表达式详解
1.结构: 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 地址码:(身份证号码第一位到第六 ...
- 身份证号码正则表达式
1.简单的正则表达式: (1)preg_match("/^(\d{18,18}|\d{15,15}|\d{17,17}x)/",/",/",id_card) ( ...
最新文章
- Hbase完全分布式的搭建
- 【第44题】【062题库】2019年OCP认证062考试新题
- 对C语言中递归算法的分析
- Lync Server 2010企业版系列PART6:部署后端
- 二叉树的先序/中序/后序(递归、非递归)+层序遍历
- 第三次学JAVA再学不好就吃翔(part87)--Arrays工具类的asList方法
- php获取当前系统配置文件,thinkphp5.1+配置文件结构及获取
- 神盾局特工第四季/全集Agents Of SHIELD迅雷下载
- Teamcenter(Enterprise 2007) Admin 手法之 -- 移除relation
- struts 2.3.8备忘
- 【ACM ICPC 2011–2012, Northeastern European Regional Contest】Interactive Permutation Guessing【交互题】
- flash builder 4.6 mac 版破解方法
- 什么是外贸网站?企业为什么要建设外贸网站?
- 【软件网每日新闻播报│第9-18期】
- ORB——OPC服务器冗余的最佳选择
- 内存管理Memorynbsp;OC——第九天
- bibtex引用参考文献排版格式
- ADF4350调试笔记
- 俄罗斯方块(一):简版
- Unity3D图表控件使用XCharts使用