身份证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. 身份证号码的严格校验(非正则)

    文章目录 前言 序言 一.身份证号码介绍 1.身份证号码组成 2.省份证号码中的名词解释 1.区域代码(地址码) 2.生日 3.顺序码 4.校验码 总结 二.校验码计算 1.公式拆解 2.运算 三.实 ...

  2. 15位、18位身份证号码正则表达式

    身份证正则表达式 在项目中遇到身份证号码验证,百度了一些资料,太简单的和太复杂的pass,综合了一些案例,取长补短,形成了个折中版本的,正则表达式如下: var reg =/(^[1-9]\d{5}( ...

  3. 身份证号码编码方法及校验算法

    身份证号码编码方法及校验算法 1 身份证号码的字段构成: 地址码 身份证前六位,表示户口所在县(市.旗.区)的行政区划代码. 生日码 身份证第七至第十四位,表示出生的年.月.日. 顺序码 身份证十五到 ...

  4. 身份证号码的合法性校验

    javascript版本的 身份证号码的合法性校验 /** * 检验身份证号码 * 15位:ddddddyymmddxxp * 18位:ddddddyyyymmddxxxy * @param card ...

  5. 最新js验证手机号码、电话号码、身份证号码正则表达式代码

    js验证手机号码.电话号码.身份证号码正则表达式 手机号码正则表达式验证 固定电话号码正则表达式 身份证正则 手机号码正则表达式验证 function checkPhone(){ var phone ...

  6. java身份证号码正则表达式校验(含最后一位的校验值规则)

    这里是python版本的: https://yanwenjing.blog.csdn.net/article/details/108210623 请仔细阅读注释 点击这里下载判断身份证号码的小工具 身 ...

  7. java 身份证号码正则表达式校验

    /*** 身份证号码验证*/ public class IdentityUtils {public static boolean isIDNumber(String IDNumber) {if (ID ...

  8. python身份证号码正则表达式校验(含最后一位的校验值规则)

    这里是java版本的:https://yanwenjing.blog.csdn.net/article/details/76066985 请仔细阅读注释 点击这里下载判断身份证号码的小工具 身份证号码 ...

  9. 身份证号码正则表达式详解

    1.结构: 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. 地址码:(身份证号码第一位到第六 ...

  10. 身份证号码正则表达式

    1.简单的正则表达式: (1)preg_match("/^(\d{18,18}|\d{15,15}|\d{17,17}x)/",/",/",id_card) ( ...

最新文章

  1. Hbase完全分布式的搭建
  2. 【第44题】【062题库】2019年OCP认证062考试新题
  3. 对C语言中递归算法的分析
  4. Lync Server 2010企业版系列PART6:部署后端
  5. 二叉树的先序/中序/后序(递归、非递归)+层序遍历
  6. 第三次学JAVA再学不好就吃翔(part87)--Arrays工具类的asList方法
  7. php获取当前系统配置文件,thinkphp5.1+配置文件结构及获取
  8. 神盾局特工第四季/全集Agents Of SHIELD迅雷下载
  9. Teamcenter(Enterprise 2007) Admin 手法之 -- 移除relation
  10. struts 2.3.8备忘
  11. 【ACM ICPC 2011–2012, Northeastern European Regional Contest】Interactive Permutation Guessing【交互题】
  12. flash builder 4.6 mac 版破解方法
  13. 什么是外贸网站?企业为什么要建设外贸网站?
  14. 【软件网每日新闻播报│第9-18期】
  15. ORB——OPC服务器冗余的最佳选择
  16. 内存管理Memorynbsp;OC——第九天
  17. bibtex引用参考文献排版格式
  18. ADF4350调试笔记
  19. 俄罗斯方块(一):简版
  20. Unity3D图表控件使用XCharts使用

热门文章

  1. 第四天 轨道交通仿真入门
  2. RHCE(五)HTTP、SSL协议综合实验
  3. 基于JAVA大众点评管理系统计算机毕业设计源码+系统+lw文档+部署
  4. 2023华南农业大学计算机考研信息汇总
  5. win10文件夹加密_Win10系统加密文件夹
  6. python并行计算
  7. python 使用PIL工具包中的pytesseract函数识别英文字符
  8. 《彼得林奇的成功投资》一——好公司第一位,价格第二位
  9. prison break
  10. NOIP蒟蒻组初赛攻略