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

地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码。

出生日期码表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。

顺序码表示同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。顺序码的奇数分给男性,偶数分给女性。

校验码是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。

出生日期计算方法。

15位的身份证编码首先把出生年扩展为4位,简单的就是增加一个19或18,这样就包含了所有1800-1999年出生的人;

2000年后出生的肯定都是18位的了没有这个烦恼,至于1800年前出生的,那啥那时应该还没身份证号这个东东,⊙﹏⊙b汗...

下面是正则表达式:

出生日期1800-2099  (18|19|20)?\d{2}(0[1-9]|1[12])(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|X)$/i

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

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

校验位规则     公式:∑(ai×Wi)(mod 11)……………………………………(1)

公式(1)中:

i----表示号码字符从由至左包括校验码在内的位置序号;

ai----表示第i位置上的号码字符值;

Wi----示第i位置上的加权因子,其数值依据公式Wi=2^(n-1)(mod 11)计算得出。

i 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1

Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1

function IdentityCodeValid (code) {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 tip = "";var pass = true;if (!code || !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(code)) {tip = "身份证号格式错误";pass = false;}else if (!city[code.substr(0, 2)]) {tip = "地址编码错误";pass = false;}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;}var last = parity[sum % 11];if (parity[sum % 11] != code[17]) {tip = "校验位错误";pass = false;}}}if (!pass) alert(tip);return pass;}

身份证件号码有效性校验相关推荐

  1. MATLAB身份证件号码定位识别

    题目:MATLAB身份证件号码定位识别 程序代码 %身份证识别程序.识别身份证上面的身份证号码,并且单独提取出来,形成一副仅剩身份证号码的二值区域图像 clc; clear all; close al ...

  2. vue+element 身份证号码以及有效性校验 适用 15位 或18位

    data () {let idCardValidity = (rule, code, callback) => {var city = { 11: "北京", 12: &qu ...

  3. 常用的手机号,身份号正则校验

    常用的手机号,身份号正则校验 手机号的正则校验: let tel = 12345678901; /^1[34578]\d{9}$/.test(tel): 返回值为true和false: functio ...

  4. python3实现身份证有效性校验

    python3 实现身份证有效性校验 直接上代码 # --coding:utf-8-- W = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ...

  5. 【python】身份证号码有效性校验

    1. 前言 中华人民共和国国家标准GB 11643-1999<公民身份号码>中规定:公民身份号码是特征组合码,由17位数字本体码和1位校验码组成. 18位数字组合的方式是: 其中,最后一位 ...

  6. c#代码实现GPS数据的有效性校验

    用于校验GPS报文指令的有效性 很简单的代码,留存吧 public static bool Verify(string gpsInfo)         {             if (gpsIn ...

  7. rust之poem框架实践系列(一)grpc

    本文将通过poem框架所提供的grpc功能来实现一个简单token provider服务 goem介绍 poem 是一个功能齐全且易于使用的 Web 框架,采用 Rust 编程语言. (git源码地址 ...

  8. Java 银行卡和身份证号根据校验位验证是否合法

    1.银行卡号码的校验 /** * 校验银行卡卡号 * @param cardId * @return */ public static boolean checkBankCard(String car ...

  9. 二代身份证编码规则及校验代码实现

    本文主要讨论的是二代身份证编码规则及其Java代码实现,下面的校验方式还不是特别严谨,由于只校验了前两位的省份信息,中间六位的出生日期信息和最后一位的校验码信息,故对于部分不满足要求的证件号码刚好同时 ...

  10. 任意用户密码重置(四):重置凭证未校验

    在逻辑漏洞中,任意用户密码重置最为常见,可能出现在新用户注册页面,也可能是用户登录后重置密码的页面,或者用户忘记密码时的密码找回页面,其中,密码找回功能是重灾区.我把日常渗透过程中遇到的案例作了漏洞成 ...

最新文章

  1. ❤️手撕这十道HiveSQL题还不能吊打面试官,却能保你不被吊打❤️【推荐收藏】
  2. (七)渐变 矩形渐变 放射渐变
  3. Spring松耦合的实现
  4. 转:UNITY,如何为你的游戏选择正确的网络类型
  5. Matlab循环读取txt文件并对其中数据进行计算最后导出为excel
  6. 调度算法为何被阿里如此重视?
  7. Mybatis select元素返回List
  8. 分布式缓存应用(转载的)
  9. laravel安装laravel-ide-helper扩展进行代码提示(二)
  10. 全自动采集新闻站源码-单站自动采集新闻源码(seo标题伪原创)
  11. PTA5-53 两个有序序列的中位数
  12. 【JQuery】数据
  13. 程序员打产品经理事件:做不了的事情,直接推给主管
  14. Ragel-基于有限状态机用于产生源码的编译器
  15. react+ts+gulpjs将插件转成umd.js文件
  16. 怎么读取cf卡id_simotion读写CF卡,保存/读取变量
  17. 离线浏览工具webdup 可下载网站页面
  18. How to Become a Straight-A student
  19. 学生来看我,我自我满足...........
  20. 12-Web安全—基于SQL Server的报错注入——and,conver,cast

热门文章

  1. QQ桌球瞄准器开发(4)透明度、颜色、线宽与母球大小
  2. 计算机研究生论文多少字,研究生一篇论文需要多少字?
  3. 舱机器人尾巴毛茸茸_『新奇玩意』毛茸茸的机器人不仅可撸,还会摇尾巴
  4. 命名实体识别主要方法
  5. 电脑出现问题。你的PIN不可用,请单击以重置——解决方案总结
  6. 航摄比例尺、成图比例尺、地面分辨率与航摄设计用图比例尺
  7. 生信入门(二)fastqc 生成的.html解读
  8. Fingerprint 解锁流程
  9. 我的团长我的团第十四集
  10. 计算机wifi共享usb设备,手机设置wifi热点如何通过usb和电脑共享网络