欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

校验身份证号码有效性的代码

更新时间: 2014-01-05 02:27:50 责任编辑: Author_N1

 

求一个校验身份证号码有效性的代码
可以根据一个输入的身份证号码,校验身份证号码中的出生年月日的有效性和末位的有效性。
--参考方法--

Function sf
Lparameters lcString
If Len(Alltrim(lcString)) != 18
Return 0
Endif 
Dimension quan(17)
quan(1)=7 
quan(2)=9 
quan(3)=10 
quan(4)=5 
quan(5)=8 
quan(6)=4 
quan(7)=2 
quan(8)=1 
quan(9)=6 
quan(10)=3 
quan(11)=7 
quan(12)=9 
quan(13)=10 
quan(14)=5 
quan(15)=8 
quan(16)=4 
quan(17)=2

sn = 0
For i = 1 To 17
sn = sn + Val(Substr(lcString,i,1)) * quan(i)
Next

lnTemp = Int(Mod(sn,11)) &&计算最后一个验证码
lcYan = 'a'
If lnTemp == 0
lcYan = '1'
Else
If lnTemp == 1
lcYan = '0'
Else
If lnTemp = 2
lcYan = 'X'
Else
lcYan = Transform(12 - lnTemp)
Endif
Endif
Endif

If Right(lcString,1) != lcYan
Return 0
Endif 
If !Left(lcString,2) $ '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 '
Return 0
Endif 
If Val(Substr(lcString,7,4)) <= 1950
Return 0
Endif

If Year(Date()) - Val(Substr(lcString,7,4)) < 15
Return 0
Endif

If Val(Substr(lcString,11,2)) < 1 Or Val(Substr(lcString,11,2)) > 12
Return 0
Endif
If Val(Substr(lcString,13,2)) < 0 Or Val(Substr(lcString,13,2)) > 31
Return 0
Endif
Return 1
Endfunc




这个是我之前写的一个简单的
对年月日验证不严密
返回1表示正确
0表示错误
--参考方法--
SFZH=[141027197802163033]

*-- 判断身份证长度
IF LEN(SFZH)!=18
   MESSAGEBOX([身份证号码长度为 ]+TRANSFORM(LEN(SFZH))+[ 位])
ENDIF

*-- 判断年
NYEAR=INT(VAL(SUBSTR(SFZH,7,4)))
IF NOT BETWEEN(NYEAR,1900,YEAR(DATE()))
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:27:50
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/10120/
本文WWW.DOC100.NET DOC100.NET版权所有。