这么拽
看一下
走过路过,看到好奇进来看看。
赞一个,学习下
谢谢分享啊
崇拜,我是个新手小白,刚学了一天!
import re
#Errors=['验证通过!','身份证号码位数不对!','身份证号码出生日期超出范围或含有非法字符!','身份证号码校验错误!','身份证地区非法!']
def checkIdcard(idcard):
Errors=['验证通过!','身份证号码位数不对!','身份证号码出生日期超出范围或含有非法字符!','身份证号码校验错误!','身份证地区非法!']
area={"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":"国外"}
idcard=str(idcard)
idcard=idcard.strip()
idcard_list=list(idcard)
#地区校验
if(notarea[(idcard)]):
print Errors
#15位身份号码检测
if(len(idcard)==15):
if((int(idcard)+1900) % 4 == 0 or((int(idcard)+1900) %100 == 0 and (int(idcard)+1900) % 4 == 0 )):
erg=re.compile('{5}{2}((01|03|05|07|08|10|12)(0||3)|(04|06|09|11)(0||30)|02(0|)){3})#//测试出生日期的合法性
else:
ereg=re.compile('{5}{2}((01|03|05|07|08|10|12)(0||3)|(04|06|09|11)(0||30)|02(0|1|2)){3})#//测试出生日期的合法性
if(re.match(ereg,idcard)):
print Errors
else:
print Errors
#18位身份号码检测
elif(len(idcard)==18):
#出生日期的合法性检查
#闰年月日:((01|03|05|07|08|10|12)(0||3)|(04|06|09|11)(0||30)|02(0|))
#平年月日:((01|03|05|07|08|10|12)(0||3)|(04|06|09|11)(0||30)|02(0|1|2))
if(int(idcard) % 4 == 0 or (int(idcard) % 100 == 0 andint(idcard)%4 == 0 )):
ereg=re.compile('{5}19{2}((01|03|05|07|08|10|12)(0||3)|(04|06|09|11)(0||30)|02(0|)){3})#//闰年出生日期的合法性正则表达式
else:
ereg=re.compile('{5}19{2}((01|03|05|07|08|10|12)(0||3)|(04|06|09|11)(0||30)|02(0|1|2)){3})#//平年出生日期的合法性正则表达式
#//测试出生日期的合法性
if(re.match(ereg,idcard)):
#//计算校验位
S = (int(idcard_list) + int(idcard_list)) * 7 +(int(idcard_list) + int(idcard_list)) * 9 +(int(idcard_list) + int(idcard_list)) * 10 +(int(idcard_list) + int(idcard_list)) * 5 +(int(idcard_list) + int(idcard_list)) * 8 +(int(idcard_list) + int(idcard_list)) * 4 +(int(idcard_list) + int(idcard_list)) * 2 +int(idcard_list) * 1 + int(idcard_list) * 6 +int(idcard_list) * 3
Y = S % 11
M = "F"
JYM = "10X98765432"
M = JYM#判断校验位
if(M == idcard_list):#检测ID的校验位
print Errors
else:
print Errors
else:
print Errors
else:
print Errors
学习了
牛逼
谢谢楼主的源码。
不错哦
顶楼主
不免回?
谢谢分享
学习中
新手来学习
借鉴
谢谢楼主!
好东西
good good study