公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。

排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码,最后一位是数字校验码。

身份证最后一位是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位,而19位的号码违反了国家标准,并且我国的计算机系统也不承认19位的身份证号码。Ⅹ是罗马数字的10,用X来代替10,可以保证公民的身份证符合国家标准。

计算方法

1、将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 ;

2、将这17位数字和系数相乘的结果相加;

3、用加出来和除以11,看余数是多少;

4、余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字。其分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2;

5、通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的X。如果余数是10,身份证的最后一位号码就是2;

例如:某男性的身份证号码是34052419800101001X。我们要看看这个身份证是不是合法的身份证。

首先:我们计算3*7+4*9+0*10+5*5+...+1*2,前17位的乘积和是189

然后:用189除以11得出的结果是商17余2

最后:通过对应规则就可以知道余数2对应的数字是x。所以,这是一个合格的身份证号码。

1 //验证身份证号,成功则返回省份编号+出生日期+性别

2 functionidentifyCard(sId){3 //省份编号

4 var aCity={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:"国外 "};5

6 //判断身份证号是否18位

7 if(!/^\d{17}(\d|x)$/i.test(sId))8 return -1;9

10 //将身份证号的x替换成a

11 sId=sId.replace(/x$/i,"a");12

13 //判断地区编号是否合法

14 if(aCity[parseInt(sId.substr(0,2))]==null)15 return -2; //return "Error:非法地区";

16

17 //判断出生日期是否合法

18 var sBirthday=sId.substr(6,4)+"-"+Number(sId.substr(10,2))+"-"+Number(sId.substr(12,2)); //如:1986-07-15

19 var d=new Date(sBirthday.replace(/-/g,"/")); //如:1986/07/15

20 if(sBirthday!=(d.getFullYear()+"-"+ (d.getMonth()+1) + "-" +d.getDate()))21 return -3;//return "Error:非法生日";

22

23 //判断最后一位校验码是否正确

24 //身份证号的后四位的前三位是当日出生的顺序码,奇为男,偶为女;

25 //最后一位是校验码,由前17位数字乘以指定系数的结果相加,然后除以11,得到余数,这余数对应[1 0 X 9 8 7 6 5 4 3 2]中的数字。如余数是1,那么最终的校验码就是0;余数是2,最终校验码就是X

26 var iSum = 0;27 for(var i = 17;i>=0;i --)28 iSum += (Math.pow(2,i) % 11) * parseInt(sId.charAt(17 - i),11);29 if(iSum%11!=1)30 return -4; //return "Error:非法证号";

31 birthday = ""+sId.substr(6,4)+Number(sId.substr(10,2))+Number(sId.substr(12,2));32 return ""+parseInt(sId.substr(0,2))+birthday+(sId.substr(16,1)%2?1:2); //"男":"女");

33 }

mysql校验规则居民身份证号_身份证号规则及校验相关推荐

  1. 微信公众号_订阅号+服务号开发工具包-翟东平-专题视频课程

    微信公众号_订阅号+服务号开发工具包-15114人已学习 课程介绍         "微信公众平台深度开发Java版 v2.0"系列课程共有6季,使用JAVA语言,系统讲解微信公众 ...

  2. 各路由协议的协议号_协议号和端口号大全

    协议号和端口号大全 协议号和端口号大全协议号是存在于 IP 数据报的首部的 20 字节 的固定部分,占有 8bit. 该字段是指出此数据报所携带的是数据是使 用何种协议,以便目的主机的 IP 层知道将 ...

  3. linux 命令详解 大于号_大于号与小于号_笨办法学Bash Shell编程-基础篇视频课程_Linux视频-51CTO学院...

    聪明人下笨功夫.本课程所倡导"笨办法"的核心是: ● 手动输入所有代码,不要复制粘贴! ● 正确地输入所有代码,也包括注释 ● 运行代码并保证产生相同的输出 ● 如果出现了bug, ...

  4. jq校验输入框值变化时_谈谈自己对CRC校验的理解

    1.CRC是用来干嘛的? 检测数据传输过程中是否出现错误(某些位,或某几位,或者某块区域位错误). 2.CRC是否能校正数据传输中的错误? CRC只能检错,不能纠错.如果发现错误,可根据双方协议规定要 ...

  5. 公众号抢号_公众号调性是什么意思?公众号排版可以塑造公众号调性吗?

    很多公众号运营人都会谈论的公众号调性是什么,怎么确定公众号的调性呢?一起来看看吧~ 1 怎么确定公众号调性 首先我们来了解一下,公众号的调性到底是什么,公众号调性即我们公众号的整体风格,是由公众号运营 ...

  6. 微信二次修改微信号_微信号怎么改第二次?微信7.0.15版本改微信号方法解析

    微信7.0.15版本是最近出来的一个版本,可以修改微信号,赢得了很多用户的关注,那么具体的修改方法是什么?下面就是对相关内容的介绍,感兴趣的话可以一起来了解下. 微信支持修改微信号操作流程 在7.0. ...

  7. 免费学python加哪个公众号_公众号正式运营啦

    这个寒冷的冬天,希望未来的美好都能与你环环相扣. 专研方向 教学视频录制 个人觉得录制教学的视频课程是对自己知识巩固,以及帮助他人学习最有效的方式,并且在19年就有计划和打算,为此精心准备了两套公益免 ...

  8. 使用代理爬去微信公众号_公众号粉丝从0到1000的引流思路企业如何做好微信公众号运营?公众号运营技巧,你都知道吗?微信公众号怎么去推广运营?...

    一直以来,公众号打开率持续走低几乎成了一个行业共识.但事实上,过去一年微信公众平台的整体流量是上升的. "上升幅度在内部看来还不小."微信公众平台相关负责人表示. 但为什么平摊至每 ...

  9. 小程序webview关注公众号_公众号如何关联小程序

    公众号如何关联小程序 现在公众号已经是我们生活中非常常见的推广营销的工具了,都说以前1.0的PC时代,是网站的时代,而现在2.0的移动时代是公众号的时代,但是公众号类似H5的链接的形式,用户的体验感不 ...

  10. 苹果付费app共享公众号_公众号淘客和APP淘客哪个好做?公众号与淘客APP利弊分析...

    更多精彩,请点击上方蓝字关注我们!近来淘客圈内很多人都在讨论APP淘客和公众号淘客,到底哪个更好做?哪个更赚钱?这两个问题一直困扰着中小淘客. 由于少数有实力的大淘客肯定做全领域的覆盖,相互配合引流, ...

最新文章

  1. android 学习笔记之图形算法
  2. 从基础设施到云原生应用,全方位解读阿里云原生新锐开源项目
  3. JS中怎样获取当前日期的前一个月和后一个月的日期字符串
  4. 一个http请求就是一个线程吗,java的服务是每收到一个请求就新开一个线程来处理吗...
  5. LeetCode hard 668. Kth Smallest Number in Multiplication Table(二分答案)
  6. MySQL高级 - 查询缓存 - 开启查询缓存
  7. WebSocket实战之————GatewayWorker使用笔记例子
  8. 论文学习11-Adversarial training for multi-context joint entity and relation extraction(实体关系买抽取模型,对抗学习
  9. 自检代码中trustmanager漏洞_通达OA远程代码执行漏洞通告
  10. 用PhotoSwipe制作相册,手势可放大
  11. 14. Window clearInterval() 方法
  12. docker镜像分层原理
  13. Dgraph 1.2.8 发布,事务性分布式图形数据库
  14. linux c 键盘钩子,利用键盘钩子在Windows平台下捕获键盘动作 (转)
  15. 分享一个电脑截动图的软件LICEcap
  16. 转载:最舒服的色彩搭配RGB值配色 (赞、实用)
  17. iOS数据持久化设计探讨(NSCache,PINCache,YYCache,CoreData,FMDB,WCDB,Realm)
  18. 与师生谈人工智能3:精确定义之病
  19. 算法导论——钢条切割问题(C语言)
  20. 缓动动画_核心动画概念:缓入缓出

热门文章

  1. python标注cad桩位_如何在图纸上作出桩位坐标及大量编号
  2. [IOS]——播放器AVPlayer的实现
  3. 吴恩达 深度学习 2021版 笔记
  4. 北京专业一般人小规模代理记账
  5. c语言程序设计电子科技大学,C语言程序设计
  6. 超像素分割 SLIC算法 使用示例
  7. Js-Alert弹出框几种样式(一级)
  8. sip 接听后没有声音
  9. 基于Scala版本的TMDB大数据电影分析项目
  10. Mac ffmpeg推流记录