毛豆丫
发表于 2015-11-10 12:06:48
这么拽
逗逼洋
发表于 2015-11-10 14:55:40
看一下
Johnwang522
发表于 2015-11-10 15:50:59
走过路过,看到好奇进来看看。
bottle_01
发表于 2015-11-11 07:15:11
赞一个,学习下
cabbageyang
发表于 2015-11-11 11:21:52
谢谢分享啊
奋斗品格
发表于 2015-11-12 11:48:46
崇拜,我是个新手小白,刚学了一天!
lianshitong
发表于 2015-11-13 13:31:14
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
小丑丑
发表于 2015-11-13 14:09:39
学习了
takes1985
发表于 2015-11-14 00:01:47
牛逼
twjxddyjgb
发表于 2015-11-14 11:19:25
谢谢楼主的源码。
楚发髻
发表于 2015-11-14 11:43:59
不错哦
五道杠
发表于 2015-11-14 23:38:05
顶楼主
xzq
发表于 2015-11-18 12:01:18
不免回?
NewSong
发表于 2015-11-18 12:19:24
谢谢分享
grayhui
发表于 2015-11-18 13:54:50
学习中
chenjunlinghao
发表于 2015-11-18 16:51:17
新手来学习
雨天的渔人
发表于 2015-11-19 00:05:03
借鉴
bacon6581
发表于 2015-11-19 08:56:29
谢谢楼主!
_xiao
发表于 2015-11-19 10:20:22
好东西
felx521
发表于 2015-11-23 00:34:39
good good study