<SCRIPT LANGUAGE="JavaScript">
   <!--
   var lastNumber;
   var id = "15位身份证号码"//15位身份证号码
   var getNum=eval(id.charAt(0)*7+id.charAt(1)*9+id.charAt(2)*10+id.charAt(3)*5+id.charAt(4)*8+id.charAt(5)*4+id.charAt(6)*2+id.charAt(7)*1+id.charAt(8)*6+id.charAt(9)*3+id.charAt(10)*7+id.charAt(11)*9+id.charAt(12)*10+id.charAt(13)*5+id.charAt(14)*8+id.charAt(15)*4+id.charAt(16)*2);
   getNum=getNum%11;
   switch (getNum) {
   case 0 :
   lastNumber="1";
   break;
   case 1 :
   lastNumber="0";
   break;
   case 2 :
   lastNumber="X";
   break;
   case 3 :
   lastNumber="9";
   break;
   case 4 :
   lastNumber="8";
   break;
   case 5 :
   lastNumber="7";
   break;
   case 6 :
   lastNumber="6";
   break;
   case 7 :
   lastNumber="5";
   break;
   case 8 :
   lastNumber="4";
   break;
   case 9 :
   lastNumber="3";
   break;
   case 10 :
   lastNumber="2";
   break;
   }
   document.write(lastNumber);
   //return lastNumber;
   
   //-->
   </SCRIPT>
   
   引用内容:
   
   根据〖中华人民共和国国家标准 GB 11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
   
   地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码。生日期码表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。顺序码表示同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。顺序码的奇数分给男性,偶数分给女性。校验码是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。下面举例说明该计算方法。
   
   15位的身份证编码首先把出生年扩展为4位,简单的就是增加一个19,但是这对于1900年出生的人不使用(这样的寿星不多了)
   
   某男性公民身份号码本体码为34052419800101001,首先按照公式⑴计算:
   
   ∑(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
   
   ai 3 4 0 5 2 4 1 9 8 0 0 1 0 1 0 0 1 a1
   
   Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1
   
   ai×Wi 21 36 0 25 16 16 2 9 48 0 0 9 0 5 0 0 2 a1
   
   根据公式(1)进行计算:
   ∑(ai×Wi) =(21+36+0+25+16+16+2+9+48++0+0+9+0+5+0+0+2) = 189
   
   189 ÷ 11 = 17 + 2/11
   
   ∑(ai×Wi)(mod 11) = 2
   
   然后根据计算的结果,从下面的表中查出相应的校验码,其中X表示计算结果为10:
   
   ∑(ai×WI)(mod 11) 0 1 2 3 4 5 6 7 8 9 10
   校验码字符值ai 1 0 X 9 8 7 6 5 4 3 2
   根据上表,查出计算结果为2的校验码为所以该人员的公民身份号码应该为 34052419800101001X。
   
   a[0]*7+a[1]*9+a[2]*10+a[3]*5+a[4]*8+a[5]*4+a[6]*2+a[7]*1+a[8]*6+a[9]*3
   +a[10]*7+a[11]*9+a[12]*10+a[13]*5+a[14]*8+a[15]*4+a[16]*2

JS实现身份证号码15位转18位时最后一位的算法相关推荐

  1. js验证身份证号码包括最后一位字母

    通过正则进行js验证身份证号码: var numRegex = /^([a-zA-Z\d_]{1,18})$/;if (!numRegex.test(val)) {return '请输入身份证号码或格 ...

  2. js根据身份证号码判断性别和年龄

    /**这是一个超实用的用js根据身份证号码判断性别男女的特效代码,详细看下面的*/ /** 根据身份证号码判断性别 15位身份证号码:第7.8位为出生年份(两位数),第9.10位为出生月份,第11.1 ...

  3. JS身份证号码校验,JS根据身份证号码获取出生年月日,JS根据出生年月日获取年龄,JS根据身份证号码获取性别

    目录 1.JS身份证号码校验 2.JS根据身份证号码获取出生年月日 3.JS根据出生年月日获取年龄 4.JS根据身份证号码获取性别 1.JS身份证号码校验 /*** 身份证校验** @export* ...

  4. js实现身份证号码验证(组成结构以及验证原理)

    今天一个客户反馈过来说用户身份证不能输入字母"X",让我看看怎么回事.看到客户发过来的截图,原来限制了只能输入数字.这个修改起来简单,二话不说打开代码,由于代码是同事写的,仔细看了 ...

  5. js验证身份证号码是否正确(整理)

    使用:/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/ if(!(/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(v ...

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

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

  7. JS判断身份证(15位18位)的合法性

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  8. C# 身份证号码15位和18位验证

    /// <summary> /// 身份证 /// </summary> [Serializable] public class IDCard {/// <summary ...

  9. js版身份证省市性别查询(18位和15位)

    var H_11 = new Array(); H_11[0] = Array(); H_11[1] = Array("东城区|110101","西城区|110102&q ...

最新文章

  1. 【2018.2.25】c++预习练习
  2. [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之材质了解Materials...
  3. 再见 Xshell!这个开源的终端工具更酷炫!
  4. MAVEN 傻瓜式快速教程
  5. 线段树之单点更新,区域求和
  6. 要是有力气的话可以做装卸工,月入过万不是梦
  7. 贪心算法——字典序最小问题
  8. MFC建立C语言项目,mfc开发(mfc项目开发实例85个)
  9. 3628、验证回文串
  10. webmax函数高级教程整理集2
  11. python生成随机字符串包含数字字母_使用python生成一个指定长度的字符串(随机密码),要求包括数字、字母、特殊符号(string库解析)...
  12. 年轻时放纵享乐,不要指望年老时一念向善
  13. F28335的DSP中主频的配置
  14. Spring 七大模块介绍
  15. 频域法分析系统详解及个人笔记
  16. linux系统下多终端管理工具,terminator
  17. 软件工程师资格认证,你合格吗?
  18. js自定义提示框弹窗
  19. 2022-3-19(洛谷)
  20. 基于python的微信好友数据分析_python 微信好友特征数据分析及可视化

热门文章

  1. java计算机毕业设计恒美服饰原材料采购预约配送系统MyBatis+系统+LW文档+源码+调试部署
  2. 再见,北京,你好,沈阳
  3. 多样数字人民币钱包来袭,阻力与动力并存
  4. Pinia下一代vue状态管理工具
  5. 安装windows server 2008 R2虚拟机,并成功安装VMware Tools(上)
  6. 设计模式-工厂模式(详细)
  7. TIDB 6.0新特性漫谈之Clinic
  8. OBS框架流程和源码分析七一视频流捕获机制
  9. selenium如何控制已打开浏览器
  10. 调用后台接口返回报错前端隐藏提示_前端异常监控解决方案研究(转)