用Python写一个应用正则表达式验证身份证号的程序
时间: 2024-09-17 16:01:45 浏览: 74
在Python中,可以使用re模块来编写一个简单的正则表达式程序来验证中国大陆的身份证号码。身份证号码通常由18位数字组成,分为前6位地区码、第7到14位出生日期码、第15到17位顺序码和最后一位校验码。这里是一个基本的示例:
```python
import re
def validate_id(id_number):
# 正则表达式模式,用于匹配中国大陆身份证号码
pattern = r'^\d{15}(?:\d{2}|X|x)$'
# 使用try-except结构处理异常
try:
match = re.match(pattern, id_number)
if match and len(id_number) == 18:
# 检查最后一位校验码是否有效
sum OddDigits = sum(int(digit) * (19 - i) for i, digit in enumerate(reversed(id_number[:-1])))
check_digit = (sum % 11 < 2) * '10X'[sum % 11] or str(sum % 11)
if check_digit == id_number[-1]:
return True
else:
print("身份证号码长度错误")
except Exception as e:
print(f"验证失败,原因:{e}")
return False
# 测试示例
id_to_validate = "123456789012345678"
if validate_id(id_to_validate):
print("身份证号码有效")
else:
print("身份证号码无效")
阅读全文