python正则表达式身份证
时间: 2023-09-02 20:12:58 浏览: 175
下面是一个Python正则表达式,可以用于匹配18位身份证号码:
```python
import re
id_pattern = re.compile(r'^\d{6}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]\d|3[0-1])\d{3}[\dX]$')
id_number = '123456199001011234'
if id_pattern.match(id_number):
print('Valid ID number')
else:
print('Invalid ID number')
```
其中,正则表达式`^\\d{6}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]\\d|3[0-1])\\d{3}[\\dX]$`的含义如下:
- `^`:匹配输入字符串的开始位置。
- `\d{6}`:匹配6个数字,表示身份证前6位地址码。
- `(18|19|20)`:匹配18、19、20中的一个,表示出生年份的前两位。
- `\d{2}`:匹配2个数字,表示出生年份的后两位。
- `(0[1-9]|1[0-2])`:匹配01-12中的一个,表示出生月份。
- `(0[1-9]|[1-2]\d|3[0-1])`:匹配01-31中的一个,表示出生日期。
- `\d{3}`:匹配3个数字,表示出生日期之后的顺序码。
- `[\dX]`:匹配数字或字母X,表示校验位。
如果要匹配15位身份证号码,只需要将正则表达式中的前6位地址码和后3位顺序码修改即可。
相关问题
python正则表达式身份证号码
以下是Python中使用正则表达式验证身份证号码的例子:
```python
import re
def is_valid_id_number(id_number):
# 15位或18位数字,最后一位可以是字母X
pattern = r'^\d{15}|\d{18}|(\d{17}[xX])$'
if re.match(pattern, id_number):
return True
else:
return False
# 测试
id_number = '11010119900307771X'
if is_valid_id_number(id_number):
print('身份证号码合法')
else:
print('身份证号码不合法')
```
python正则表达式校验身份证
以下是使用Python正则表达式校验身份证的方法:
```python
import re
def check_id_card(id_card):
# 身份证正则表达式
pattern = re.compile(r'^[1-9]\d{5}(19\d{2}|20[01]\d)(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}[\dX]$')
# 匹配身份证号码
match = pattern.match(id_card)
if match:
# 校验码校验
id_card = list(id_card)
id_card_sum = 0
for i in range(17):
id_card[i] = int(id_card[i])
id_card_sum += id_card[i] * (2 ** (17 - i))
id_card_check = (12 - id_card_sum % 11) % 11
if id_card_check == 10:
id_card_check = 'X'
if str(id_card_check) == id_card[-1]:
return True
else:
return False
else:
return False
```
使用方法:
```python
id_card = '110101199003074518'
if check_id_card(id_card):
print('身份证号码校验通过')
else:
print('身份证号码校验不通过')
```
输出结果:
```
身份证号码校验通过
```
阅读全文