鱼C论坛

 找回密码
 立即注册
查看: 610|回复: 2

身份证号码的有效性

[复制链接]
发表于 2020-4-25 21:02:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
判断身份证号码的有效性(考虑省份,年月日即可)


import re
pattern=re.compile('^(4[1-5]|2[1-3]|3[1-7]|4[1-6]|5[0-4]|6[1-3]|[71|81|91])\d{4}(19[0-9][0-9])|(20[0|1][1-9])(0[1-9]|1[1|2])\d{4}$')
a=input("请输入一串数字(quit退出):")
while(a!='quit'):
    match=re.findall(pattern,a)
    if match:
        print("有效")
    else:
        print("无效")
    a=input("数字:")
print("程序完成!")

请问有哪些问题呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-25 21:03:52 | 显示全部楼层
我是没看懂你的正则写的什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-27 10:45:52 | 显示全部楼层
我帮你略做了修改,瑕疵还是很多
你的代码只要超出18位 还是能有效果 比如: 4504231985070740188 (19位数字了,身份证18位)

我的瑕疵也很多,比如:
第三、四位表示市(地级市、自治州、盟及国家直辖市所属市辖区和县的汇总码)。其中,01-20,51-70表示省直辖市;21-50表示地区(自治州、盟)。

我的去除了第70位,如果不去除会有 70-79 的  
3、第五、六位表示县(市辖区、县级市、旗)。01-18表示市辖区或地区(自治州、盟)辖县级市;21-80表示县(旗);81-99表示省直辖县级市。
这边我把 19 也能匹配进去了
总之就是错误很多~~~只能参考哈 希望你能改进改进吧
import re
a=input("请输入一串数字(quit退出):")
while(a!='quit'):
    match=re.findall(r'^[1-8][1-7][0-6][0-9][1-9][0-9][1-2][0-9]{3}[0-1][0-9][1-3][0-9][0-9]{4},a)
    if match:
        print("有效")
    else:
        print("无效")
    a=input("数字:")
print("程序完成!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 22:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表