python用正则表达式匹配身份证
时间: 2023-06-20 19:03:19 浏览: 96
可以使用 Python 的 re 模块来进行正则表达式匹配。以下是一个匹配身份证号码的示例代码:
```python
import re
# 定义身份证号码的正则表达式
id_pattern = r'^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$'
# 测试用例
id_list = ['110101199003074518', '31010119800101001X', '130101200005017890', '123456789012345678']
# 匹配身份证号码
for id in id_list:
if re.match(id_pattern, id):
print(f'{id} 是有效的身份证号码')
else:
print(f'{id} 不是有效的身份证号码')
```
输出结果为:
```
110101199003074518 是有效的身份证号码
31010119800101001X 是有效的身份证号码
130101200005017890 不是有效的身份证号码
123456789012345678 不是有效的身份证号码
```
其中,身份证号码的正则表达式 `id_pattern` 参考了国家标准 GB 11643-1999《公民身份号码》。
相关问题
Python中用正则表达式验证身份证号,验证规则:长度必须为15位或18位,最后一位是校验位,可能为数字或字符x或X。
可以使用Python中的re模块来进行正则表达式的匹配,以下是验证身份证号的正则表达式:
```python
import re
def check_id(id):
pattern = r'^\d{15}$|^\d{18}$|^\d{17}[xX]$'
if re.match(pattern, id):
return True
else:
return False
```
其中,正则表达式`r'^\d{15}$|^\d{18}$|^\d{17}[xX]$'`表示:
- `^`和`$`分别表示字符串的开头和结尾
- `\d`表示匹配数字
- `{15}`和`{18}`表示前面的模式匹配15次或18次
- `[xX]`表示匹配字符x或X
调用`check_id`函数,传入身份证号码作为参数即可判断是否符合规则。
用python实现用正则表达式匹配出身份证号,并将出生年月日提取出来
import re
# 定义正则表达式匹配身份证号
pattern = r'\d{17}[\dXx]|\d{15}'
# 定义身份证号
id_card = '510108198802011234'
# 使用正则表达式匹配身份证号
match = re.match(pattern, id_card)
# 判断是否匹配成功
if match:
# 获取身份证号
id_card_num = match.group(0)
# 提取出生年月日
year = id_card_num[6:10]
month = id_card_num[10:12]
day = id_card_num[12:14]
print(f'身份证号为:{id_card_num}')
print(f'出生年月日为:{year}年{month}月{day}日')
else:
print('身份证号不符合规则')
阅读全文