身份证 = 220222202202222222 MsgBox % 身份证校验(身份证) /* 下面这段由飞跃群分享 MsgBox % 18位身份证校验码(身份证) 18位身份证校验码(身份证) { if (StrLen(身份证)<17) ;校验码计算需要身份证前17位 return Loop, 17 累和+=SubStr(身份证,A_Index,1)*Mod(1<<(18-A_Index),11) return SubStr("10X98765432", Mod(累和,11)+1, 1) } */ 身份证校验(ID) { 省= ( ,,,,,,,,,, 北京市,天津市,河北省,山西省,内蒙古自治区,,,,,, 辽宁省,吉林省,黑龙江省,,,,,,,, 上海市,江苏省,浙江省,安徽省,福建省,江西省,山东省,,,, 河南省,湖北省,湖南省,广东省,广西壮族自治区,海南省,,, 重庆市,四川省,贵州省,云南省,西藏自治区,,,,,,, 陕西省,甘肃省,青海省,宁夏回族自治区,新疆维吾尔自治区 ) 地址:=StrSplit(省,",")[substr(ID,1,2)] 性别:=Mod(substr(ID,-1,1),2) ? "男" : "女" 出生:=substr(ID,7,8) EnvSub, 出生, %a_now%, days 年龄 := 出生<0 ? substr(a_now,1,4)-substr(ID,7,4)+1 : "" Loop,Parse,% "7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2",`, Sum:=A_LoopField*SubStr(ID, a_index, 1)+(a_index=1 ? 0 : Sum) Return SubStr("10x98765432", Mod(Sum,11)+1, 1)=SubStr(ID, 0) and 年龄 and 地址 ? 地址 年龄 "岁" 性别 : "号码错误" }
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。
评论(0)