最近项目需要对身份证进行比较合理的筛选,并不想用到第三方接口,所以写了个方法:

包括支持身份证号合法性验证, 支持18位身份证号,支持地址编码、出生日期、校验位验证. 基本上这样就可以了.

IdCodeValid:function(code){//身份证号合法性验证//支持15位和18位身份证号//支持地址编码、出生日期、校验位验证var city={11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古",21:"辽宁",22:"吉林",23:"黑龙江 ",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"山东",41:"河南",42:"湖北 ",43:"湖南",44:"广东",45:"广西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏 ",61:"陕西",62:"甘肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"香港",82:"澳门",91:"国外 "};var row={'pass':true,'msg':'验证成功'};if(!code || !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|[xX])$/.test(code)){row={'pass':false,'msg':'身份证号格式错误'};}else if(!city[code.substr(0,2)]){row={'pass':false,'msg':'身份证号地址编码错误'};}else{//18位身份证需要验证最后一位校验位if(code.length == 18){code = code.split('');//∑(ai×Wi)(mod 11)//加权因子var factor = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];//校验位var parity = [ 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 ];var sum = 0;var ai = 0;var wi = 0;for (var i = 0; i < 17; i++){ai = code[i];wi = factor[i];sum += ai * wi;}if(parity[sum % 11] != code[17].toUpperCase()){row={'pass':false,'msg':'身份证号校验位错误'};}}}return row;
}
IdCodeValid('xxx');

正则表达式:

出生日期1800-2099 (18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])

身份证正则表达式 /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|[xX])$/

位校验规则 6位地址编码+8位出生日期+3位顺序号+1位校验位

详解正则表达式实现二代身份证号码验证相关推荐

  1. 正则实现二代身份证号码验证详解

    Start 开发过程中,常常需要对一些输入信息进行有效性验证,使用正则表达式进行校验是最简单.效率最高的方式了,下面就来看看15/18位身份证号码验证的正则表达式吧. 一: IdCodeValid:f ...

  2. 二代身份证号码验证器[超简单]

    一代身份证号码是十五位, 2013年1月1日开始,咱们中国全面停止使用一代身份证了. 二代身份证号码: 1-6位:表示行政区划的代码. 1.2位,所在省(直辖市,自治区)代码: 3.4位,所在地级市( ...

  3. 【algorithm】源码详解中国大陆新身份证号码算法

    之前印象身份证最后一位奇数为男性,偶数为女性.看了下算法才明白,这指的是老身份证15位,18位身份证末尾加了一个校验码,用来验证是否为真实身份证号. 先看中国大陆身份证结构: 1.号码的结构 公民身份 ...

  4. JS正则表达式-附身份证号码验证(简易版)

    文章目录 JS正则表达式 匹配与搜索 一.方括号,圆括号 二.修饰符 三.元字符 四.量词 身份证号码验证(简易版) 身份证号码规则: 1.地址码 2.年份码 3.月份码 4.日期码 5.顺序码 6. ...

  5. 15/18位身份证号码验证的正则表达式总结(详细版)

    前言 开发过程中,常常需要对一些输入信息进行有效性验证,使用正则表达式进行校验是最简单.效率最高的方式了,下面就来看看15/18位身份证号码验证的正则表达式吧. 介绍 xxxxxx yyyy MM d ...

  6. Js二代身份证号码正则验证

    一代身份证号码是十五位, 2013年1月1日开始,咱们中国全面停止使用一代身份证了. 二代身份证号码: 1-6位:表示行政区划的代码. 1.2位,所在省(直辖市,自治区)代码: 3.4位,所在地级市( ...

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

    正则表达式身份证号码验证 var certificateNum = '430722****10287917'var reg = /^([1-6][1-9]|50)\d{4}(18|19|20)\d{2 ...

  8. MySQL正则表达式判断身份证_15/18位身份证号码验证的正则表达式总结(详细版)...

    前言 开发过程中,常常需要对一些输入信息进行有效性验证,使用正则表达式进行校验是最简单.效率最高的方式了,下面就来看看15/18位身份证号码验证的正则表达式吧. 介绍 xxxxxx yyyy MM d ...

  9. 【JS】Js二代身份证号码正则验证

    Js二代身份证号码正则验证代码: export function checkIDCard(idcode) {// 加权因子var weight_factor = [7,9,10,5,8,4,2,1,6 ...

最新文章

  1. php common errors
  2. buider模式的缺陷
  3. 公众号获取用户手机号_小程序中如何获取微信用户绑定的手机号
  4. SQLServer常见性能问题
  5. electron、node
  6. python------面向对象介绍
  7. 3、PV、UIP、UV指的是什么
  8. mysql使用技巧_MySQL使用不得不看的几个小技巧
  9. 芬兰诺基亚获得三个欧洲市场的5G订单
  10. 力扣Java编译器_力扣(LeetCode)位1的个数 个人题解
  11. VS2017 离线安装包下载
  12. 圆孔夫琅禾费衍射 matlab,信息光学基于matlab圆孔圆环夫琅禾费衍射论文副本
  13. 实战Java企业商品进销存管理系统
  14. 时点数列序时平均数_由时点数列计算序时平均数.ppt
  15. Xcode7 网络请求报错:The resource could not be loaded be
  16. MATLAB读取数据文件
  17. 《赋予角色移动时的动画》part02——动画蓝图
  18. 大数据在职研究生哪个好_大数据在职研究生
  19. 解决maya导出FBX出现问题。
  20. android中的加密算法,Android中加密算法

热门文章

  1. 区块链安全:从web3.0到数字货币
  2. 【项目一】Eclipse(2020-03版本)安装
  3. 历史上最伟大的12位程序员,你还知道吗?
  4. ucosii/iii实时嵌入式操作系统任务切换与中断管理深入解析
  5. 最全最详细前端面试题及答案
  6. rtklib学习——读取sp3和clk
  7. 赴勘测设计院进行BIM学习调研的总结报告
  8. 接口(interfaces)的定义和实现
  9. 【毕设调试一】WiFi模块esp8266的调试
  10. Fixing thinkpad bluetooth keyboard (by quqi99)