验证身份证号是否正确的代码

2016-01-29 20:02 40 1 收藏

验证身份证号是否正确的代码,验证身份证号是否正确的代码

【 tulaoshi.com - ASP 】

我们要验证身份证号是否正确,就得先了解身份证号的含意。

身份证号都代表什么意思?

1、号码的结构
公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/asp/)

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

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/asp/)

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

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

5、校验码(第十八位数)
(1)十七位数字本体码加权求和公式
S = Sum(Ai * Wi), i = 0, ... , 16 ,先对前17位数字的权求和
Ai:表示第i位置上的身份证号码数字值
Wi:表示第i位置上的加权因子
Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
(2)计算模
Y = mod(S, 11)
(3)通过模得到对应的校验码
Y: 0 1 2 3 4 5 6 7 8 9 10
校验码: 1 0 X 9 8 7 6 5 4 3 2

所以我们就可以大致写一个函数来校验是否正确了。

 

Function IDCheck(e)
IDCheck = true
arrVerifyCode = 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 = False
Exit Function
End If
Dim Ai
If Len(e) = 18 Then
Ai = Mid(e, 1, 17)
ElseIf Len(e) = 15 Then
Ai = e
Ai = Left(Ai, 6) & "19" & Mid(Ai, 7, 9)
End If
If Not IsNumeric(Ai) Then
'IDCheck= "身份证除最后一位外,必须为数字!"
IDCheck = False
Exit Function
End If
Dim strYear, strMonth, strDay
strYear = 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) Then
If DateDiff("yyyy",Now,BirthDay)<-140 or cdate(BirthDay)date() Then
'IDCheck= "身份证输入错误!"
IDCheck = False
Exit Function
End If
If strMonth 12 Or strDay 31 Then
IDCheck = False
'IDCheck= "身份证输入错误!"
Exit Function
End If
Else
'IDCheck= "身份证输入错误!"
IDCheck = False
Exit Function
End If
Dim i, TotalmulAiWi
For i = 0 To 16
TotalmulAiWi = TotalmulAiWi + CInt(Mid(Ai, i + 1, 1)) * Wi(i)
Next
Dim modValue
modValue = TotalmulAiWi Mod 11
Dim strVerifyCode
strVerifyCode = arrVerifyCode(modValue)
Ai = Ai & strVerifyCode
IDCheck = Ai
If Len(e) = 18 And e < Ai Then
'IDCheck= "身份证号码输入错误!"
IDCheck = False
Exit Function
End If
End Function

来源:https://www.tulaoshi.com/n/20160129/1510604.html

延伸阅读
标签: excel
Excel正确输入身份证号码   Etulaoshixcel数据排序怎么操作?   Excetulaoshi.coml数据输入范围怎么控制?   Excel数据表格中如何按条件显示  
标签: Web开发
441800清远市 441801市辖区 441802清城区 441821佛冈县 441823阳山县 441825连山壮族瑶族自治县 441826连南瑶族自治县 441827清新县 441881英德市 441882连州市 441900东莞市 442000中山市 445100潮州市 445101市辖区 445102湘桥区 445121潮安县 445122饶平县 445200揭阳市 445201市辖区 445202榕城区 445221揭东县 44...
标签: 身份证
身份证可异地换证 为方便长期离开常住户口所在地的群众就近办理居民身份证,同时创造更加安全的居民身份证社会应用环境,经中央全面深化改革领导小组第十五次会议审议通过,日前,公安部印发《关于建立居民身份证异地受理挂失申报和丢失招领制度的意见》(以下简称“意见”)。 《意见》指出,建立居民身份证异地受理、挂失申报和丢失招领制...
标签: 电脑入门
在进行员工信息统计的时候,往往用到姓名、性别、身份证号和出生日期等不同字段。这些信息单个输入工作量将会很大,如果输入了身份证号,我们就没有必要再出生日期了,出生日期可以从身份证号码里面提取,下面是具体的实现方法。 由于身份证号可能有15位和18位两种情况,首先需要让身份证号按照15位和18位进行区分。在Excel软件没有提供按照字...
当完成了银行卡的口头挂失后,需要到派出所进行身份证的补办,由于正式身份证办理需要一定的时间,所以先办理一个临时身份证,再到银行办理正式的挂失服务并补办新卡。 身份证丢了怎么挂失?临时身份证要多久? 身份证丢了怎么挂失 一般来说,身份证丢失之后并没有挂失的流程,公安机关也没有要求专门办理身份证挂失,公安机关...

经验教程

603

收藏

32
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部