身份证号码校验工具

合集下载

身份证号码快速检验及修正

身份证号码快速检验及修正

#VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE!
年龄
2003-12-31 20031231 女 15岁零11个月零25天
#VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE!
#VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! #VALUE!

二代身份证在线编辑器

二代身份证在线编辑器

博学笃行自强不息
二代身份证在线编辑器
1. 简介
二代身份证在线编辑器是一种方便快捷的工具,允许用户在线编辑和生成二代身份证的模板。

通过这个工具,用户可以自定义身份证的各个字段,包括姓名、性别、民族、出生日期、身份证号码等。

这个在线编辑器提供了丰富的功能,使用户能够轻松地创建个性化的二代身份证模板。

2. 功能特点
2.1 自定义字段
二代身份证在线编辑器允许用户自定义身份证的各个字段。

用户可以根据自己的需求来选择是否显示或隐藏某些字段,以及更改字段的名称和格式。

例如,用户可以将身份证号码的显示格式更改为字母和数字的组合,或者将出生日期的显示格式更改为\
1。

Excel中检测输入的身份证号码是否合法函数校验方法大揭秘

Excel中检测输入的身份证号码是否合法函数校验方法大揭秘

Excel中检测输⼊的⾝份证号码是否合法函数校验⽅法⼤揭秘什么时候需要校验⾝份证号码合法性呢?1.防⽌输⼊⼈员随⼿输⼊⼀个18位数字冒充⾝份证号码2.防⽌输⼊⼿误,有时候并⾮故意输错注意本⽅法⽆法检测⾝份证是否真实存在,只能从格式上检查号码是否合法⾝份证号码校验基本原理第1步:把号码的前17位分别乘以不同的系数,系数表如下第1步第2步:把17位数字和系数相乘的结果相加,加和值再除以11,取其余数。

⽤得到的余数与⾝份证第18位号码进⾏对照,余数与⾝份证号码第18位对应关系如下表第2步例如例如:某男⼠的⾝份证号码是622924************。

⾸先我们得出前17位与系数的乘积和是320,除以11的余数是1,对应第18位数是0。

所以这是⼀个不合法的⾝份证号码。

判断⾝份证号码是否合法的函数公式计算第18位数=IF(LEN($C2)=18,MID("10X98765432",MOD(SUMPRODUCT(VALUE(MID($C2,ROW($1:$17),1)),$B$2:$B$18),11)+1,1),"长度错误")判断是否合法=IF(LEN($C2)=18,IF(MID("10X98765432",MOD(SUMPRODUCT(VALUE(MID($C2,ROW($1:$17),1)),$B$2:$B$18),11)+1,1)=RIGHT($C2,1),"合法","不合法"),"长度错误")其中,C2为⾝份证号码,$B$2:$B$18为第1到17个系数。

这个⼀般存到另⼀个sheet⾥或者顶⼀个名称,与实际使⽤的表分开函数分步讲解VALUE(MID($C2,ROW($1:$17),1))ROW函数返回⼀个1到17的数组,配个mid函数依次取出C2号码中前17个数字,并将截取的⽂本⽤value转换为数值SUMPRODUCT(VALUE(MID($C2,ROW($1:$17),1)),$B$2:$B$18),11)⽤SUMPRODUCT函数返回MID($C2,ROW($1:$17),1)数组和$B$2:$B$18(校验表)区域对应相乘的和MOD(SUMPRODUCT(VALUE(MID($C2,ROW($1:$17),1)),$B$2:$B$18),11)⽤mod对上⼀步求乘积之取11的余数MID("10X98765432",MOD(SUMPRODUCT(VALUE(MID($C2,ROW($1:$17),1)),$B$2:$B$18),11)+1,1)⽤MID函数截取10X98765432中的1位数,即⾝份证号码的第18位。

JavaScript正则表达式验证身份证号码是否合法(两种方法)讲解

JavaScript正则表达式验证身份证号码是否合法(两种方法)讲解

JavaScript正则表达式验证身份证号码是否合法(两种方法)正则表达式(regular expression)是一个描述字符模式的对象。

下面通过本篇文章给大家介绍js正则表达式验证身份证号码是否合法,需要的朋友可以参考下本篇文章第一种方法:在用户注册页面有些需求要求的比较严格,需要对身份证js验证是否合法,通过此功能严格此系统软件,从而过滤到很多水客。

下面就此实现方法给大家讲解下。

很多时候我们都是通过一组正则表达式来判断用户输入的身份证是否合法,那在用正则表达式判断之前,你对身份证号的组成有多少了解呢?下面来说说一个身份证号里面包含了多少的信息:1、号码的结构公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。

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

2、地址码(前六位数)表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按gb/T2260的规定执行。

3、出生日期码(第七位至十四位)表示编码对象出生的年、月、日,按gb/T7408的规定执行,年、月、日代码之间不用分隔符。

4、顺序码(第十五位至十七位)表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。

5、校验码(第十八位数)作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位。

X是罗马数字的10,用X来代替10,可以保证公民的身份证符合国家标准。

在知道身份证号结构组成各部分的意思后,我们开始进入主题:1、定义一个全国地区的对象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:"国外"}2、正则表达式判断第二种方法:6768697071727374757677787980818283848586位),皆为数字if(len == '15'){var re_fifteen = /^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/;var arr_data = obj.match(re_fifteen);var year = arr_data[2];var month = arr_data[3];var day = arr_data[4];var birthday = new Date('19'+year+'/'+month+'/'+day);return verifyBirthday('19'+year,month,day,birthday);}//身份证18位时,次序为省(3位)市(3位)年(4位)月(2位)日(2位)校验位(4位),校验位末尾可能为Xif(len == '18'){var re_eighteen = /^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/;var arr_data = obj.match(re_eighteen);var year = arr_data[2];var month = arr_data[3];var day = arr_data[4];var birthday = new Date(year+'/'+month+'/'+day);return verifyBirthday(year,month,day,birthday);}return false;。

18位身份证号码检测

18位身份证号码检测

1.针对国内18位身份证号码验证,通过等价类划分法、边界值分析法设计相应的测试用例;根据〖中华人民共和国国家标准GB 11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。

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

18位身份证号码各位的含义:1-2位省、自治区、直辖市代码;3-4位地级市、盟、自治州代码;5-6位县、县级市、区代码;7-14位出生年月日,比如19670401代表1967年4月1日;15-17位为顺序号,其中17位男为单数,女为双数;18位为校验码,0-9和X。

作为尾号的校验码,是由号码编制单位按统一的公式计算出来的。

等价类划分法:输入条件有效等价类无效等价类地址码的第1位是1~8的整数(1)<1的整数(7)>1的整数(8)地址码2~6位5位每一位都是0~9的整数(2)特殊字符出生年月日7~14位11~12位为[01,12]的整数(3)13~14位为[01,31]整数(4)月<01(9)月>12(10)日<01(11)日>31(12)顺序码15~17位3位每一位都是0~9的整数(5)特殊字符校验码第18位是0~9的整数或者是X(6)特殊字符号码位数180 17 19测试用例:序号号码位数前17位第18位输入内容预期结果1 0 NULL 输入无效2 17 41130219901007283 输入无效3 19 4113021990100728317输入无效418 (1)(2)(3)(4)(5)(6)411302199010072831(X)输入正确5 特殊字符411302199010072831%输入无效6 (6)(2)(3)(4)(5(6)0113021990100728317 (7)(2)(3)(4)(5)9113021990100728318 (1)特殊字符(3)(4)(5)41@3021990100728319 (1)(2)(9)(4)(5)41130219900007283110 (1)(2)(10)(4)(5)41130219901307283111 (1)(2)(3)(11)(5)41130219901000283112 (1)(2)(3)(12)(5)41130219901032283113(1)(2)(3)(4)(5)闰年2月日为[01,29]411302200002272831输入有效日>29411302200002302831输入无效平2日为41130219990227283输入有效年月[01,28] 1日>28 411302199902292831输入无效14 (1)(2)(3)(4)特殊字符411302199010072%3115 全是字母aaaaaaaaaaaaaaaaaa16 全是特殊字符@#¥%!@#¥#¥%……@#。

js身份证号码验证(小程序版)

js身份证号码验证(小程序版)

js⾝份证号码验证(⼩程序版)<view class='bgw'><form>......<view class='ipt-wrapper'><view class='ipt-l'>⾝份证</view><view class='ipt-r'><input type='text' placeholder='请输⼊您的⾝份证号' name="idcard" value='{{idcard}}' bindinput="bindIdcard"/><image src='{{icon}}' class='right-arrow'></image></view></view>.....</form></view><view class='submit' bindtap='submit'>提交预约</view><!-- 弹出层 --><view class='mask' wx:if="{{maskState}}" bindtap='hidelayer'></view><!-- 表单出错 --><view class='layer' wx:if="{{warnState}}"><image src='{{excitedicon}}' class='infoicon'></image><view class='info'>{{errorinfo}}</view><view class='btn-small' bindtap='hidelayer'>好的</view></view>....var Wi = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1]; // 加权因⼦var ValideCode = [1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2];Page({/*** 页⾯的初始数据*/data: {name: '',phone: '',idcard: '',errorinfo: '',maskState: false,warnState: false,},// 关闭弹出层hidelayer:function(){this.setData({maskState: false,warnState: false,errState: false,okState: false})},// 表单提交submit:function(){var idcard = this.data.idcard;var reg = /^1\d{10}$/;if (this.isBlank(idcard)) {this.setData({maskState: true,warnState: true,errorinfo: '⾝份证号不能为空'})return}if (!this.IdCardValidate(idcard)){this.setData({maskState: true,warnState: true,errorinfo: '⾝份证号格式错误'})return}},IdCardValidate:function (idCard) {idCard = this.trim(idCard.replace(/ /g, "")); //去掉字符串头尾空格if(idCard.length == 15) {return this.isValidityBrithBy15IdCard(idCard); //进⾏15位⾝份证的验证} else if (idCard.length == 18) {var a_idCard = idCard.split(""); // 得到⾝份证数组if (this.isValidityBrithBy18IdCard(idCard) && this.isTrueValidateCodeBy18IdCard(a_idCard)) { //进⾏18位⾝份证的基本验证和第18位的验证return true;} else {return false;}} else {return false;}},/*** 判断⾝份证号码为18位时最后的验证位是否正确* @param a_idCard ⾝份证号码数组* @return*/isTrueValidateCodeBy18IdCard:function(a_idCard) {var sum = 0; // 声明加权求和变量if (a_idCard[17].toLowerCase() == 'x') {a_idCard[17] = 10; // 将最后位为x的验证码替换为10⽅便后续操作}for (var i = 0; i < 17; i++) {sum += Wi[i] * a_idCard[i]; // 加权求和}var valCodePosition = sum % 11; // 得到验证码所位置if (a_idCard[17] == ValideCode[valCodePosition]) {return true;} else {return false;}},/*** 验证18位数⾝份证号码中的⽣⽇是否是有效⽣⽇* @param idCard 18位书⾝份证字符串* @return*/isValidityBrithBy18IdCard:function (idCard18) {var year = idCard18.substring(6, 10);var month = idCard18.substring(10, 12);var day = idCard18.substring(12, 14);var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day));// 这⾥⽤getFullYear()获取年份,避免千年⾍问题if (temp_date.getFullYear() != parseFloat(year)|| temp_date.getMonth() != parseFloat(month) - 1|| temp_date.getDate() != parseFloat(day)) {return false;} else {return true;}},/*** 验证15位数⾝份证号码中的⽣⽇是否是有效⽣⽇* @param idCard15 15位书⾝份证字符串* @return*/isValidityBrithBy15IdCard:function (idCard15) {var year = idCard15.substring(6, 8);var month = idCard15.substring(8, 10);var day = idCard15.substring(10, 12);var temp_date = new Date(year, parseFloat(month) - 1, parseFloat(day));// 对于⽼⾝份证中的你年龄则不需考虑千年⾍问题⽽使⽤getYear()⽅法if (temp_date.getYear() != parseFloat(year)|| temp_date.getMonth() != parseFloat(month) - 1|| temp_date.getDate() != parseFloat(day)) {return false;} else {return true;}},//去掉字符串头尾空格trim:function (str) {return str.replace(/(^\s*)|(\s*$)/g, "");},// 判断是否为空isBlank:function(_value) {if (_value == null || _value == "" || _value == undefined) {return true;}return false;},bindIdcard: function (e) {this.setData({idcard: e.detail.value})},})。

JAVA校验身份证号码工具类(支持15位和18位)

JAVA校验身份证号码工具类(支持15位和18位)

JAVA校验⾝份证号码⼯具类(⽀持15位和18位)JAVA 校验⾝份证号码⼯具类(⽀持15位和18位)import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.GregorianCalendar;import java.util.Hashtable;import java.util.regex.Matcher;import java.util.regex.Pattern;/*** TODO* ⾝份证校验⼯具类*/public class IDCardUtil {/*校验规则:如果为15位,只能是15位数字;前两位满⾜省/直辖市的⾏政区划代码。

如果为18位,允许为18位数字,如出现字母只能在最后⼀位,且仅能为“X”;18位中包含年⽉的字段满⾜⽇期的构成规则;前两位满⾜省/直辖市的⾏政区划代码;最后⼀位校验位满⾜⾝份证的校验规则(⾝份证校验规则见附录)。

附录:⾝份证校验规则公民⾝份证号码校验公式为RESULT = ∑( A[i] * W[i] ) mod 11。

其中,i表⽰号码字符从右⾄左包括校验码在内的位置序号;A[i]表⽰第I位置上的数字的数值;W[i]表⽰第i位置上的加权因⼦,其值如下:i 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2W[i] 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2RESULT 0 1 2 3 4 5 6 7 8 9 10校验码A[1] 1 0 X 9 8 7 6 5 4 3 2*/public static boolean idCardValidate(String idCard) {String[] valCodeArr = {"1", "0", "x", "9", "8", "7", "6", "5", "4", "3", "2"};String[] wi = {"7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7", "9", "10", "5", "8", "4", "2"};String ai = "";String ai1 = "";String ai2 = "";// 号码的长度 15位或18位if (idCard.length() != 15 && idCard.length() != 18) {return false;}// 数字除最后以为都为数字if (idCard.length() == 18) {ai = idCard.substring(0, 17);} else if (idCard.length() == 15) {ai = idCard.substring(0, 6) + "19" + idCard.substring(6, 15);}if (!isNumeric(ai)) {return false;}// 出⽣年⽉是否有效String strYear = ai.substring(6, 10); // 年份String strMonth = ai.substring(10, 12); // ⽉份String strDay = ai.substring(12, 14); // ⽉份if (!isDataFormat(strYear + "-" + strMonth + "-" + strDay)) {return false;}GregorianCalendar gc = new GregorianCalendar();SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd");try {if ((gc.get(Calendar.YEAR) - Integer.parseInt(strYear)) > 150|| (gc.getTime().getTime() - s.parse(strYear + "-" + strMonth + "-" + strDay).getTime()) < 0) {return false;}} catch (Exception e) {e.printStackTrace();}if (Integer.parseInt(strMonth) > 12 || Integer.parseInt(strMonth) == 0) {return false;}if (Integer.parseInt(strDay) > 31 || Integer.parseInt(strDay) == 0) {return false;}// 地区码是否有效Hashtable h = getAreaCode();if (h.get(ai.substring(0, 2)) == null) {return false;}// 判断最后⼀位的值int totalmulAiWi = 0;for (int i = 0; i < 17; i++) {totalmulAiWi = totalmulAiWi + Integer.parseInt(String.valueOf(ai.charAt(i))) * Integer.parseInt(wi[i]);}int modValue = totalmulAiWi % 11;String strVerifyCode = valCodeArr[modValue];ai1 = ai + strVerifyCode.toUpperCase();ai2 = ai + strVerifyCode.toLowerCase();if (idCard.length() == 18) {if (!ai1.equals(idCard) && !ai2.equals(idCard)) {return false;}}return true;}private static boolean isNumeric(String str) {Pattern pattern = pile("[0-9]*");Matcher isNum = pattern.matcher(str);if (isNum.matches()) {return true;}return false;}private static boolean isDataFormat(String str) {boolean flag = false;String regxStr = "^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([135 Pattern pattern1 = pile(regxStr);Matcher isNo = pattern1.matcher(str);if (isNo.matches()) {flag = true;}return flag;}private static Hashtable getAreaCode() { Hashtable hashtable = new Hashtable(); hashtable.put("11", "北京");hashtable.put("12", "天津");hashtable.put("13", "河北");hashtable.put("14", "⼭西");hashtable.put("15", "内蒙古");hashtable.put("21", "辽宁");hashtable.put("22", "吉林");hashtable.put("23", "⿊龙江");hashtable.put("31", "上海");hashtable.put("32", "江苏");hashtable.put("33", "浙江");hashtable.put("34", "安徽");hashtable.put("35", "福建");hashtable.put("36", "江西");hashtable.put("37", "⼭东");hashtable.put("41", "河南");hashtable.put("42", "湖北");hashtable.put("43", "湖南");hashtable.put("44", "⼴东");hashtable.put("45", "⼴西");hashtable.put("46", "海南");hashtable.put("50", "重庆");hashtable.put("51", "四川");hashtable.put("52", "贵州");hashtable.put("53", "云南");hashtable.put("54", "西藏");hashtable.put("61", "陕西");hashtable.put("62", "⽢肃");hashtable.put("63", "青海");hashtable.put("64", "宁夏");hashtable.put("65", "新疆");hashtable.put("71", "台湾");hashtable.put("81", "⾹港");hashtable.put("82", "澳门");hashtable.put("91", "国外");return hashtable;}}。

通过姓名查询身份证号码

通过姓名查询身份证号码

通过姓名查询身份证号码摘要:本文将介绍如何通过姓名查询身份证号码的方法和注意事项。

身份证号码作为个人身份的唯一标识,具有重要的实际应用价值。

通过姓名查询身份证号码可以帮助我们快速准确地获取他人的身份信息,同时也可以避免个人信息泄露的风险。

然而,需要注意的是,在使用这种查询方法时需要遵循相关法律法规,确保查询的合法性。

一、背景介绍身份证号码是每个公民的重要个人信息,包含了个人的身份识别信息和公民身份号码。

根据我国《中华人民共和国居民身份证法》,每个公民在年满16岁时,都可以申请并获得一张身份证,用于标识自己的身份和个人信息。

身份证号码的查询可以帮助我们快速了解一个人的基本身份信息,例如出生地、性别、年龄等。

二、查询方法1. 公安部门查询公安部门是办理身份证的直接管理机关,他们拥有完整的身份证信息数据库。

如果需要查询某人的身份证号码,可以前往就近的公安部门进行查询。

准备好被查询人的身份证复印件、查询人的身份证和查询原因等相关材料,前往公安部门办理。

2. 公民便民服务中心查询公安部门通常设有公民便民服务中心,提供身份证号码的查询服务。

可以通过电话、网上或者直接前往公民便民服务中心进行查询,提供被查询人的姓名等相关信息以及查询原因,然后按照工作人员的指导进行操作。

3. 网上查询随着互联网的发展,越来越多的服务逐渐上线到了网上。

某些城市和地区的公安部门已经提供了通过网上平台查询身份证号码的服务。

通过网上查询,可以减少不必要的时间和人力成本。

只需要打开公安部门的官方网站,填写相应信息,按照指引完成操作即可。

三、注意事项1. 合法性查询他人的身份证号码需要遵循相关法律法规的规定,确保查询行为的合法性。

在查询身份证号码时,需要有充分的合法理由,并且经过被查询人的同意。

若查询行为涉及隐私泄露或其他非法目的,将可能涉及到法律责任。

2. 权限一般来说,普通公民是没有权限查询他人的身份证号码的,只有公安部门等有权机关才能查询。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档