编程验证身份证号怎么填

时间:2025-01-28 15:43:10 网络游戏

编程验证身份证号码通常涉及以下几个步骤:

长度校验:

首先检查身份证号码的长度,必须是15位或18位。

字符校验:

确保身份证号码只包含数字,不包含字母或特殊字符。

日期校验:

提取身份证号码中的出生日期部分,并验证其是否合法。

地区校验:

验证身份证号码中的地区代码是否正确。

校验码校验:

根据身份证号码的前17位数字计算校验码,并验证其是否正确。

```python

import re

def is_valid_id_number(id_number):

长度校验

if len(id_number) != 18:

return False

字符校验

if not id_number.isdigit():

return False

日期校验

birth_date = id_number[6:14]

if not is_valid_date(birth_date):

return False

地区校验

province_code = id_number[0:2]

if not is_valid_province_code(province_code):

return False

校验码校验

check_digit = id_number[-1]

if not is_valid_check_digit(id_number[:-1], check_digit):

return False

return True

def is_valid_date(date_str):

try:

year, month, day = map(int, date_str.split('-'))

if year < 1900 or year > 2100 or month < 1 or month > 12 or day < 1 or day > 31:

return False

return True

except ValueError:

return False

def is_valid_province_code(province_code):

这里可以添加一个有效的省份代码列表,并检查输入的省份代码是否在其中

valid_province_codes = ['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']

return province_code in valid_province_codes

def is_valid_check_digit(id_number_without_check_digit, check_digit):

weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]

check_digits = '10X98765432'

total_sum = sum(int(digit) * weight for digit, weight in zip(id_number_without_check_digit, weights))

return check_digits[total_sum % 11] == check_digit.upper()

示例

id_number = "11010119900101002X"

print(is_valid_id_number(id_number)) 输出: True 或 False

```

这个示例代码包含了长度、字符、日期、地区和校验码的验证。你可以根据需要调整和扩展这个示例,以适应不同的编程语言和验证规则。