python正则表达式身份证号码
时间: 2023-11-20 14:56:55 浏览: 114
以下是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正则表达式,可以用于匹配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
id_number = "110101199003076119" # 身份证号码
pattern = re.compile(r'^[1-9]\d{5}(19|20)\d{2}(0\d|1[0-2])([0-2]\d|3[0-1])\d{3}[\dX]$')
# 匹配身份证号码的正则表达式
result = pattern.match(id_number)
if result:
print("匹配成功")
else:
print("匹配失败")
```
解释一下正则表达式的含义:
- `^` 表示匹配字符串的开头;
- `[1-9]` 表示第一位必须是1-9中的一个数字;
- `\d{5}` 表示接下来的5位必须是数字;
- `(19|20)` 表示接下来的两位必须是19或20;
- `\d{2}` 表示接下来的两位必须是数字;
- `(0\d|1[0-2])` 表示接下来的两位必须是01-12中的一个数字;
- `([0-2]\d|3[0-1])` 表示接下来的两位必须是01-31中的一个数字;
- `\d{3}` 表示接下来的3位必须是数字;
- `[\dX]` 表示最后一位必须是数字或大写字母X;
- `$` 表示匹配字符串的结尾。
使用正则表达式进行身份证号码的匹配可以有效地提高准确率和效率。
阅读全文