JS实现身份证号码15位转18位时最后一位的算法
<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位时最后一位的算法相关推荐
- js验证身份证号码包括最后一位字母
通过正则进行js验证身份证号码: var numRegex = /^([a-zA-Z\d_]{1,18})$/;if (!numRegex.test(val)) {return '请输入身份证号码或格 ...
- js根据身份证号码判断性别和年龄
/**这是一个超实用的用js根据身份证号码判断性别男女的特效代码,详细看下面的*/ /** 根据身份证号码判断性别 15位身份证号码:第7.8位为出生年份(两位数),第9.10位为出生月份,第11.1 ...
- JS身份证号码校验,JS根据身份证号码获取出生年月日,JS根据出生年月日获取年龄,JS根据身份证号码获取性别
目录 1.JS身份证号码校验 2.JS根据身份证号码获取出生年月日 3.JS根据出生年月日获取年龄 4.JS根据身份证号码获取性别 1.JS身份证号码校验 /*** 身份证校验** @export* ...
- js实现身份证号码验证(组成结构以及验证原理)
今天一个客户反馈过来说用户身份证不能输入字母"X",让我看看怎么回事.看到客户发过来的截图,原来限制了只能输入数字.这个修改起来简单,二话不说打开代码,由于代码是同事写的,仔细看了 ...
- js验证身份证号码是否正确(整理)
使用:/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/ if(!(/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(v ...
- 【JS】Js二代身份证号码正则验证
Js二代身份证号码正则验证代码: export function checkIDCard(idcode) {// 加权因子var weight_factor = [7,9,10,5,8,4,2,1,6 ...
- JS判断身份证(15位18位)的合法性
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- C# 身份证号码15位和18位验证
/// <summary> /// 身份证 /// </summary> [Serializable] public class IDCard {/// <summary ...
- js版身份证省市性别查询(18位和15位)
var H_11 = new Array(); H_11[0] = Array(); H_11[1] = Array("东城区|110101","西城区|110102&q ...
最新文章
- 【2018.2.25】c++预习练习
- [我给Unity官方视频教程做中文字幕]beginner Graphics – Lessons系列之材质了解Materials...
- 再见 Xshell!这个开源的终端工具更酷炫!
- MAVEN 傻瓜式快速教程
- 线段树之单点更新,区域求和
- 要是有力气的话可以做装卸工,月入过万不是梦
- 贪心算法——字典序最小问题
- MFC建立C语言项目,mfc开发(mfc项目开发实例85个)
- 3628、验证回文串
- webmax函数高级教程整理集2
- python生成随机字符串包含数字字母_使用python生成一个指定长度的字符串(随机密码),要求包括数字、字母、特殊符号(string库解析)...
- 年轻时放纵享乐,不要指望年老时一念向善
- F28335的DSP中主频的配置
- Spring 七大模块介绍
- 频域法分析系统详解及个人笔记
- linux系统下多终端管理工具,terminator
- 软件工程师资格认证,你合格吗?
- js自定义提示框弹窗
- 2022-3-19(洛谷)
- 基于python的微信好友数据分析_python 微信好友特征数据分析及可视化
热门文章
- java计算机毕业设计恒美服饰原材料采购预约配送系统MyBatis+系统+LW文档+源码+调试部署
- 再见,北京,你好,沈阳
- 多样数字人民币钱包来袭,阻力与动力并存
- Pinia下一代vue状态管理工具
- 安装windows server 2008 R2虚拟机,并成功安装VMware Tools(上)
- 设计模式-工厂模式(详细)
- TIDB 6.0新特性漫谈之Clinic
- OBS框架流程和源码分析七一视频流捕获机制
- selenium如何控制已打开浏览器
- 调用后台接口返回报错前端隐藏提示_前端异常监控解决方案研究(转)