居民身份证号批量验证工具
- 格式:xls
- 大小:579.00 KB
- 文档页数:48
身份证正则表达式
身份证正则表达式是一种用来检测身份证号码是否有效的工具。
它可以帮助确保输入的身份证号码是正确的,也可以排除输入的错误格式的身份证号码。
身份证正则表达式是一种简单的技术,可以帮助程序员在用户输入时检测身份证号码的有效性。
在中国,身份证正则表达式有一种特殊的格式,它必须包含18位数字,其中前17位是数字,最后一位是字母(X)。
身份证正则表达式的正确格式可以用正则表达式(regex)来表示,如:[0-9]{17}[0-9X]。
此外,身份证正则表达式也可以用来检查身份证号码的有效性,比如检查身份证号码中的出生日期是否正确,检查身份证号码的数字是否正确,以及检查身份证号码的最后一位是否为X(大写)。
另外,身份证正则表达式还可以用来检查身份证号码是否属于特定的地区,比如说检查身份证号码是否为特定省份的身份证号码,以及检查身份证号码是否为特定城市的身份证号码。
总而言之,身份证正则表达式是一种简单而有效的工具,可以帮助程序员检测身份证号码的有效性,以及确定身份证号码属于哪个地区。
它是在实现身份验证系统中非常重要的一环,可以提高用户的安全性和安全性。
身份验证器使用方法一、身份验证器的初步认识1.1 身份验证器是个啥身份验证器啊,就像是咱们生活里的一把特殊的小钥匙。
它可不是那种普通的钥匙,而是专门用来证明“你就是你”的小玩意儿。
现在这个网络世界啊,到处都得小心谨慎,身份验证器就像是个小卫士,守护着你的各种账号、信息啥的,让那些坏家伙没法随便冒充你。
1.2 为啥要用它咱就说啊,现在网络上的骗子那是多得像天上的星星似的。
没有身份验证器,你的账号就像没上锁的大门,谁想进就进。
比如说你的银行账号,要是被不法分子钻了空子,那你的血汗钱可就像流水一样没了。
身份验证器就像一道坚固的城墙,把那些坏心思都给挡在外面。
二、身份验证器的使用步骤2.1 下载与安装首先呢,你得去正规的地方把身份验证器给下载下来。
这就好比你去正规商店买东西一样,可不能随便找个小角落就下,万一有病毒啥的,那就麻烦大了。
下载完了就安装,这个过程就像把一块拼图放到它该在的地方,按照提示一步一步来,别着急,心急吃不了热豆腐嘛。
2.2 账号绑定安装好之后呢,就开始绑定账号。
这一步就像是给你的账号和验证器牵红线,让它们俩认识认识。
你得按照要求输入账号相关的信息,可不能马虎,要是输错了,那就像搭错了线的木偶,动不了喽。
这个过程得仔细点,就像绣花一样,一针一线都不能错。
2.3 生成验证码绑定好了之后,身份验证器就开始发挥它的神奇作用啦。
每次你需要验证身份的时候,它就会像变魔术一样生成一个验证码。
这个验证码就像是个神秘的密码,只有你能看到,而且是独一无二的。
这时候你就把这个验证码输入到需要验证的地方,就像给门输入正确的密码一样,门就开了,你的账号安全也就有保障了。
三、使用身份验证器的注意事项3.1 保管好设备身份验证器这个东西啊,你得把它当成宝贝一样保管着。
要是你的手机或者其他设备丢了,里面的身份验证器可就像没了缰绳的马,有可能被别人利用。
所以啊,手机得拿好,别大大咧咧的,丢三落四可不行。
3.2 及时更新还有啊,就像人要不断学习进步一样,身份验证器也得更新。
怎么查一个人的身份证真伪怎么查一个人的身份证真伪?大家有没有遇到过这种情况?你和朋友聊到某个人,突然之间对方的身份证就被拿出来了,或者说“这人没问题,身份证我看过了”。
然后你心里想:真的能这么肯定吗?身份证明明是非常重要的个人信息,万一这个证件是假的,岂不是掉进了别人的“陷阱”?可别小看这个小小的身份证,它可背负了很多秘密,真真假假,谁知道呢?如果你也好奇,想知道怎么查一个人的身份证真伪,今天咱们就来唠一唠。
一、看外观,先从细节入手最简单的办法就是从身份证的外观来辨别。
别小看这一步,很多假身份证一看就能发现问题。
真正的身份证一般边缘平滑,手感也非常好,摸上去不会有粗糙感。
如果你觉得它的表面看起来像是塑料纸一样,或者有明显的瑕疵,那就得小心了。
有些假证的颜色也很不自然,可能偏黄或是偏淡,像是上了岁月的痕迹,跟新身份证比起来,明显不搭。
如果你的身份证一拿起来就是“呼啦啦”的声音,像是用了劣质的材料,那很可能是假的。
再看一下身份证的照片,如果发现照片和人不符,别犹豫,八成有问题。
二、通过身份证号码查真假有个办法特别简单,直接用身份证号码查一下。
你知道身份证号码有18位吧?这18位里面就藏着大学问。
前六位是地区码,代表了你出生地的编码;接下来八位是出生日期,看看是不是你说的那个年、月、日;接下来四位是顺序码,最后一位是校验码。
要是身份证号上有问题,基本上可以判定为假证。
你可以通过互联网查一下这个号码,看看是否是系统中存在的号码,或者是否和其他信息匹配不上。
比如说,身份证上标明某个地区出生,但身份证号码却指向了另一个地区,这就有点说不通了。
这个查法就像是开了一扇小窗,能透过它看到身份证的秘密。
三、用专业工具验证,靠谱又省心如果你还是不太放心,最简单的方式就是通过官方渠道验证。
像现在很多地方都提供了身份证验证的服务,甚至是通过手机就能查真伪。
比如,通过公安机关的身份信息核查系统,直接输入身份证号码,就可以看到该身份证是否存在,是否已经被注销,甚至是否涉嫌违法。
身份证校验VBA宏Function IDCheck(e)IDCheck = TruearrVerifyCode = Split("1,0,x,9,8,7,6,5,4,3,2", ",")Wi = Split("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2", ",")Checker = Split("1,9,8,7,6,5,4,3,2,1,1", ",")If Len(e) < 15 Or Len(e) = 16 Or Len(e) = 17 Or Len(e) > 18 Then'IDCheck= "身份证号共有 15 码或18位"IDCheck = FalseExit FunctionEnd IfDim Ai'取身份证前17位If Len(e) = 18 ThenAi = Mid(e, 1, 17)ElseIf Len(e) = 15 ThenAi = eAi = Left(Ai, 6) & "19" & Mid(Ai, 7, 9) '转换成17位End IfIf Not IsNumeric(Ai) Then'IDCheck= "身份证除最后一位外,必须为数字!"IDCheck = FalseExit FunctionEnd IfDim strYear, strMonth, strDaystrYear = CInt(Mid(Ai, 7, 4))strMonth = CInt(Mid(Ai, 11, 2))strDay = CInt(Mid(Ai, 13, 2))BirthDay = Trim(strYear) + "-" + Trim(strMonth) + "-" + Trim(strDay)If IsDate(BirthDay) ThenIf DateDiff("yyyy", Now, BirthDay) < -140 Or CDate(BirthDay) > Date Then'IDCheck= "身份证输入错误!"IDCheck = FalseExit FunctionEnd IfIf strMonth > 12 Or strDay > 31 ThenIDCheck = False'IDCheck= "身份证输入错误!"Exit FunctionEnd IfElse'IDCheck= "身份证输入错误!"IDCheck = FalseExit FunctionEnd IfDim i, TotalmulAiWi'十七位数字本体码加权求和For i = 0 To 16TotalmulAiWi = TotalmulAiWi + CInt(Mid(Ai, i + 1, 1)) * Wi(i) NextDim modValuemodValue = TotalmulAiWi Mod 11 '计算模Dim strVerifyCodestrVerifyCode = arrVerifyCode(modValue) '通过模得到对应的校验码Ai = Ai & strVerifyCodeIDCheck = AiIf Len(e) = 18 And e <> Ai Then'IDCheck= "身份证号码输入错误!"IDCheck = "False" & AiExit FunctionEnd IfEnd Function。
数据验证Countif函数,解决数据重复输入的问题在使用Excel编辑工作表格时经常要输入大量数据,有时要求输入的数据不能重复,例如身份证号码、准考证号码、车牌号等,一旦输入错误查找起来相当麻烦。
为避免输入出错,我们可以采用自定义公式和有效性数据检查联动的办法,让Excel对发现重复的数据进行自动全程核对检查。
也就是说,每输入一个新的身份证号码,系统就会去和已经输入的所有身份证号去逐一核对,发现错误及时纠正。
我们用Excel 2016举例说明,在其他版本Office中也可实现。
正确的原始数据输入我们以在表格中输入身份证号码为例。
由于直接输入18位身份证号码系统会以科学记数法来显示,这不符合我们的习惯,因此,首先要全选身份证一列,右键单击并选择设置单元格,将其设置为文本型的格式。
用公式构造验证条件在工作表中选中需要设置重复检查的所有单元格,然后单击“数据”功能菜单,并在“数据工具”功能区域中选择“数据验证”选项,并单击下级菜单中的第一个选项“数据验证…”。
在其他版本中叫“数据有效性”接下来在弹出的“数据验证”对话框中选择“设置”选项卡,在“允许”下拉列表框中选择“自定义”选项(同时要选择“忽略空值”选项);在“公式”下面的文本框中输入:COUNTIF($1$65535,A1)=1这里的$1$65535表示对全工作表范围进行重复检查,这样就解决了身份号数量未知的难题,不管你输入多少个人的身份证号,统统管用。
当然,如果需要检查的只是某一特定的单元格范围,可以根据实际情况重新进行调整,但必须使用绝对方式引用。
设置个性化报错提示切换到“出错警告”选项卡,在这里程序已经自动勾选了“输入无效数据时显示出错警告”的复选框,接下来将“样式”设置为“停止”选项,然后在右侧的“标题”和“错误信息”两个文本框中自行输入相关的提示内容(如“身份证重复”)、具体的提示信息解释(如“请检查当前身份证号输入是否有误,或者将之前的身份证号信息误输入为当前的这个号码”),然后单击“确定”按钮。
输入身份证查询姓名在中国,身份证是每个公民的必备证件,一般由户籍管理部门发放。
身份证上包含了个人的基本信息,如姓名、性别、出生日期、身份证号码等。
身份证号码是唯一的且具有区域特征码,这使得身份证成为识别个人身份的重要依据。
因此,通过输入身份证号码进行姓名查询是一种常见的需求。
身份证号码是一个18位的数字和字母组合,其中最后一位是校验位,用于验证身份证号码的准确性。
通过输入身份证号码进行姓名查询,需要一定的查询工具和方法。
以下是其中一种常见的方法:1. 手动查询方法这种方法适用于少量的查询需求或者没有条件使用自动查询工具的情况。
首先,您需要打开浏览器,并进入相关的身份证查询网站。
然后,在网站上找到身份证查询的入口,一般会有一个输入框或者查询按钮。
接下来,您需要将要查询的身份证号码输入到查询框中,并点击查询按钮。
系统会进行身份证号码的验证,并在查询结果页面显示相应的姓名信息。
请注意,有些身份证查询网站可能需要您提供其他的个人信息,如姓名、手机号码等。
这是为了进行更全面的查询和验证,以防止身份信息被滥用。
2. 自动查询工具对于大量的身份证号码查询需求,使用自动查询工具会更加高效和方便。
自动查询工具是一种基于计算机程序开发的软件工具,可以批量输入身份证号码,并自动查询相关的姓名信息。
这种工具适用于机构、企业等需要批量查询身份证信息的场景。
使用自动查询工具,您需要安装相应的软件,并按照工具的使用指南进行操作。
一般来说,您只需将待查询的身份证号码存储在一个文本文件中,然后将该文件导入到工具中进行批量查询。
工具会自动逐个查询身份证号码,并将查询结果保存在另一个文件中。
自动查询工具的优点是速度快、效率高,可以一次性查询大量的身份证号码。
但是,使用自动查询工具需要一定的技术和操作经验,对于普通用户可能比较复杂。
3. 服务窗口查询如果您不善于使用计算机或者不方便自行查询,还可以前往相关的服务窗口进行人工查询。
一般来说,户籍管理部门、派出所或社区服务中心等机构都提供身份证查询服务。
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;}}。
中国居民居住证号码验证⼯具--开源IdValidator.php()中华⼈民共和国居民⾝份证、中华⼈民共和国港澳居民居住证以及中华⼈民共和国台湾居民居住证号码验证⼯具(PHP Composer 版)⽀持15 位与 18 位号码。
安装composer require "jxlwqq/id-validator"注:如果 require 失败,解决⽅案见。
使⽤440308************和610104*********⽰例⼤陆居民⾝份证均为随机⽣成的假数据,如撞车,请联系删除。
810000************和830000199201300022⽰例港澳台居民居住证为北京市公安局公布的居住证样式号码。
验证⾝份证号合法性验证⾝份证号是否合法,合法返回true,不合法返回false:use Jxlwqq\IdValidator\IdValidator;$idValidator = new IdValidator();$idValidator->isValid('440308************'); // ⼤陆居民⾝份证 18 位$idValidator->isValid('610104*********'); // ⼤陆居民⾝份证 15 位$idValidator->isValid('810000************'); // 港澳居民居住证 18 位$idValidator->isValid('830000199201300022'); // 台湾居民居住证 18 位获取⾝份证号信息当⾝份证号合法时,返回分析信息(地区、出⽣⽇期、星座、⽣肖、性别、校验位),不合法返回false:use Jxlwqq\IdValidator\IdValidator;$idValidator = new IdValidator();$idValidator->getInfo('440308************'); // 18 位$idValidator->getInfo('610104*********'); // 15 位返回信息格式如下:['addressCode' => '440308', // 地址码'abandoned' => 0, // 地址码是否废弃,1 为废弃的,0 为正在使⽤的'address' => '⼴东省深圳市盐⽥区', // 地址'addressTree' => ['⼴东省', '深圳市', '盐⽥区'] // 省市区三级列表'birthdayCode' => '1999-01-10', // 出⽣⽇期'constellation' => '⽔瓶座', // 星座'chineseZodiac' => '卯兔', // ⽣肖'sex' => 1, // 性别,1 为男性,0 为⼥性'length' => 18, // 号码长度'checkBit' => '2', // 校验码]注:判断地址码是否废弃的依据是,本数据集的采集源来⾃:,每年更新⼀次。
Excel中检测输⼊的⾝份证号码是否合法函数校验⽅法⼤揭秘什么时候需要校验⾝份证号码合法性呢?1.防⽌输⼊⼈员随⼿输⼊⼀个18位数字冒充⾝份证号码2.防⽌输⼊⼿误,有时候并⾮故意输错注意本⽅法⽆法检测⾝份证是否真实存在,只能从格式上检查号码是否合法⾝份证号码校验基本原理第1步:把号码的前17位分别乘以不同的系数,系数表如下第2步:把17位数字和系数相乘的结果相加,加和值再除以11,取其余数。
⽤得到的余数与⾝份证第18位号码进⾏对照,余数与⾝份证号码第18位对应关系如下表例如:某男⼠的⾝份证号码是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位。