详解正则表达式实现二代身份证号码验证[通俗易懂]

详解正则表达式实现二代身份证号码验证[通俗易懂]二代身份证号码:1-6位:表示行政区划的代码。1、2位,所在省(直辖市,自治区)代码;3、4位,所在地级市(自治州)代码;5、6位,所在区(县,自治县,县级市)的代码;7-14位:表示出生年、月、日15-16位:所在地派出所代码17位:性别。奇数(1、3、5、7、9)男性,偶数(2、4、6、8、0)女性18位:校验位,存在十一个值:0,1,2,3,4,5,6,7,8,9,X,其值…

大家好,又见面了,我是你们的朋友全栈君。

二代身份证号码:
1-6位:表示行政区划的代码。
1、2位,所在省(直辖市,自治区)代码;
3、4位,所在地级市(自治州)代码;
5、6位,所在区(县,自治县,县级市)的代码;
7-14位:表示出生年、月、日
15-16位:所在地派出所代码
17位:性别。奇数(1、3、5、7、9)男性,偶数(2、4、6、8、0)女性
18位:校验位,存在十一个值:0,1,2,3,4,5,6,7,8,9,X,其值是用固定公式根据前面十七位计算出来的。

IdCodeValid: function(code) { 

//身份证号合法性验证 
//支持15位和18位身份证号 
//支持地址编码、出生日期、校验位验证 
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 row = { 

'pass': true,
'msg': '验证成功'
};
if (!code || !/^\d{ 
6}(18|19|20)?\d{ 
2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{ 
3}(\d|[xX])$/.test(code)) { 

row = { 

'pass': false,
'msg': '身份证号格式错误'
};
} else if (!city[code.substr(0, 2)]) { 

row = { 

'pass': false,
'msg': '身份证号地址编码错误'
};
} 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;
}
if (parity[sum % 11] != code[17].toUpperCase()) { 

row = { 

'pass': false,
,
'msg': '身份证号校验位错误',
};
}
}
}
return row;
};
IdCodeValid('xxx');
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/153620.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • python向txt文件追加txt文件_python覆盖写入

    python向txt文件追加txt文件_python覆盖写入python写入文件时的覆盖和追加在使用Python进行txt文件的读写时,当打开文件后,首先用readline()对文件的内容读取,然后再用write()写入,这是发现虽然是用“r+”模式打开,按道理是应该覆盖的,但是却出现了追加的情况。调用close()关闭文件后,再次打开写入,就正常覆盖写入,所以如果出现了这种情况,不妨在写入之前先将文档关闭再打开一下。…

  • Allatori混淆动态调试分析

    Allatori混淆动态调试分析0x00前言在家的某天正刷的抖音小姐姐的时候,朋友突然给我扔来一个jar包说是有后门叫我调试分析一下并且把后门去掉。起初以为也没多大事,只要查看代码中疑似后门的地

    2021年12月13日
  • Java中xml转义字符和gt,gte,lt,lte缩写

    Java中xml转义字符和gt,gte,lt,lte缩写javamybatisXML文件中不允许出现”>”、”<“之类的符号。需要转义”=”是可以正常使用的 字段 符号 说明 &lt; < 小于号 &gt; > 大于号 …

  • hive数据类型转换cast_sql数据类型转换convert

    hive数据类型转换cast_sql数据类型转换convert首先看一下类型转换表(来自https://www.iteblog.com/archives/892.html)我们可以用CAST来显式的将一个类型的数据转换成另一个数据类型。如何使用?CAST的语法为cast(valueASTYPE)。举个例子:假如我们一个员工表employees,其中有name、salary等字段;salary是字符串类型的。有如下的查询:SELECTname,sa…

  • PuTTY详解

    PuTTY详解

  • Mybatis学习地址总结整理-持续更新……「建议收藏」

    MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号