JavaScript二代公民身份证号验证
身份证号码中的校验码是身份证号码的最后一位,是根据〖中华人民共和国国家标准GB 11643-1999〗中有关公民身份号码的规定,
根据精密的计算公式计算出来的,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。
计算方法
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位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2;
例如:某男性的身份证号码是34052419800101001X。我们要看看这个身份证是不是合法的身份证。首先:我们计算3*7+4*9+0*10+5*5+...+1*2,前17位的乘积和是189
然后:
用189除以11得出的结果是商17余2最后:通过对应规则就可以知道余数2对应的数字是x。所以,这是一个合格的身份证号码。
js代码:
1 function check_id(){
2 var idcode= document.getElementById("IDNumber").value
3 // alert(idcode)
4 //检测身份证号码合法性---全部数字或数字+X/x 18位
5 // 加权因子
6 var weight_factor = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];
7 // 校验码
8 var check_code = ['1', '0', 'X' , '9', '8', '7', '6', '5', '4', '3', '2'];
9
10 var code = idcode + "";
11 var last = idcode[17];//最后一位
12
13 var seventeen = code.substring(0,17);
14
15 // ISO 7064:1983.MOD 11-2
16 // 判断最后一位校验码是否正确
17 var arr = seventeen.split("");
18 var len = arr.length;
19 var num = 0;
20 for(var i = 0; i < len; i++){
21 num = num + arr[i] * weight_factor[i];
22 }
23
24 // 获取余数
25 var resisue = num%11;
26 var last_no = check_code[resisue];
27
28 // 格式的正则
29 // 正则思路
30 /*
31 第一位不可能是0
32 第二位到第六位可以是0-9
33 第七位到第十位是年份,所以七八位为19或者20
34 十一位和十二位是月份,这两位是01-12之间的数值
35 十三位和十四位是日期,是从01-31之间的数值
36 十五,十六,十七都是数字0-9
37 十八位可能是数字0-9,也可能是X
38 */
39 var idcard_patter = /^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X])$/;
40
41 // 判断格式是否正确
42 var format = idcard_patter.test(idcode);
43 // alert(format)
44 // 返回验证结果,校验码和格式同时正确才算是合法的身份证号码
45 // return last === last_no && format ? true : false;
46 if(!(format==true && (last_no===last))){
47 alert("身份证号码格式输入有误!")
48 document.getElementById("IDNumber").focus();
49 }
50 }
JavaScript二代公民身份证号验证的更多相关文章
- 做一个牛XX的身份证号验证类(支持15位和18位)
原文:做一个牛XX的身份证号验证类(支持15位和18位) #region 是否合法的中国身份证号码 protected bool IsChineseID() { if (str.Length == 1 ...
- php不用正则表达式实现身份证号验证详解
写了一个身份证号验证类,php小白,写的不好,欢迎各位大神给我多提意见和建议 身份证号分为四部分,第一部分是前6位为地址码,7-14位是出生日期,15-17位是同一地方同一天出生的男孩为奇数,女孩是偶 ...
- 基于struts2框架-自定义身份证号验证器
自定义拦截器的步骤: 1.定义一个验证器的类: > 自定义的验证器都需要实现 Validator接口. > 可以选择继承 ValidatorSupport 或 FieldValidato ...
- Laravel 中自定义 手机号和身份证号验证
首先在 Providers\AppServiceProvider.php 文件中自定义 手机号和身份证号验证 // AppServiceProvider.php 文件 <?php namespa ...
- 身份证号验证js程序
最近注册一个网站,居然让我输入个人身份证号,身份证号是个人信息,怎么能告诉你呢? 输入正确的身份证号没有任何问题. 我就仅仅改了最后一位,就告诉我身份证号不对,你是怎么知道的呢?所以,搜了下身份证号的 ...
- input表单手机号、身份证号验证
<form action="" method="post" onsubmit="return checkForm(this)"> ...
- 中国居民18位身份证号验证方法,Java算法实现
public static boolean validate18Idcard(String idcard){ if(idcard == null ) { return false; } if(idca ...
- JavaScript 正则表单验证(用户名、密码、确认密码、手机号、座机号、身份证号)
1.关于JavaScript表单验证,如果使用双向绑定的前端js框架,会更容易的多.但是博主还是建议大家不要脱离源生js本身.因为源生js才是王道. 注意: a.代码中的错误提示可能会没有,在代码中找 ...
- 锋利的js之验证身份证号
我们在做互联网网站时,注册个人资料时,经常要用到身份证号,我们需要对身份证进验证,不然别人随便输个号码就通过,让你感觉这个网站做得很shit. 身份证号是有规则的. 结构和形式 1.号码的结构 公民 ...
- Android 正则表达式验证手机号、姓名(包含少数民族)、身份证号
最近项目中新增的功能,需要对手机号.姓名.身份证号等一些信息进行验证,最好的方法是通过正则表达式来验证,网上查了一些资料,写了这几个工具方法. 1.验证手机号 规则:第一位只能是1,第二位为3-8中的 ...
随机推荐
- 学习go语言编程之函数
函数定义 函数的基本组成:关键字func,函数名,参数列表,返回值,函数体,返回语句. 示例如下: func Add(a int, b int) (ret int, err error) { if a ...
- zookeeper源码(09)follower处理客户端请求
在zookeeper中,follower也可以接收客户端连接,处理客户端请求,本文将分析follower处理客户端请求的流程: 读请求处理 写请求转发与响应 follower接收转发客户端请求 网络层 ...
- beego中数据库表创建
package main import ( "fmt" "github.com/astaxie/beego/orm" _ "github.com/go ...
- 第一百一十五篇: JS集合引用类型Map
好家伙,本篇为<JS高级程序设计>第六章"集合引用类型"学习笔记 1.Map ECMAScript6以前,在JavaScript中实现"键/值" ...
- signature hdr data: BAD, no. of btyes(9088) out of range 问题排查与解决方案
在使用yum工具安装gcc的时候,报出了signature hdr data: BAD, no. of btyes(9088) out of range 的问题 这是由于centos8中rpm工具存在 ...
- 【Azure Spring Cloud】在Azure Spring Apps上看见 App Memory Usage 和 jvm.menory.use 的指标的疑问及OOM
问题描述 在Azure的Spring Cloud服务 (官名为:Spring Apps)中,在Metrics 页面中查看 App Memory Usage 和 jvm.memory.use,发现两则在 ...
- 【Azure 事件中心】向Event Hub发送数据异常 : partitionId[null]: Sending messages timed out
问题描述 在使用Java 代码向 Azure Event Hub发送数据时,先后遇见了如下两种异常消息: 1)ERROR c.t.d.h.s.source.EventHubLogConsumer - ...
- 【Azure 服务总线】Azure.Messaging.ServiceBus 多次发送消息报超时错误,是否可以配置重新发送?是否有内置重试机制?
问题描述 使用 Azure Service Bus,提供应用程序之间松耦合的消息交换,但是有时候发送消息多次出现超时错误. A connection attempt failed because th ...
- 答应我,在vue中不要滥用watch好吗?
前言 上周五晚上8点,开开心心的等着产品验收完毕后就可以顺利上线.结果产品突然找到我说要加需求,并且维护这一块业务的同事已经下班走了,所以只有我来做.虽然内心一万头草泥马在狂奔,但是嘴里还是一口答应没 ...
- 有了 ETL 数据神器 dbt,表数据秒变 NebulaGraph 中的图数据
本文搭配同主题分享视频阅读更佳,<多数据源的数据治理实践> 如果你装好某款数据库产品,比如:分布式图数据库 NebulaGrpah,跃跃欲试的第一步是不是就让它干活搞数据呢?好的,现在问题 ...