2830680393 发表于 2020-4-25 21:02:46

身份证号码的有效性

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


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

请问有哪些问题呢?

永恒的蓝色梦想 发表于 2020-4-25 21:03:52

我是没看懂你的正则写的什么

Twilight6 发表于 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'^{3}{4},a)
    if match:
      print("有效")
    else:
      print("无效")
    a=input("数字:")
print("程序完成!")
页: [1]
查看完整版本: 身份证号码的有效性