正则匹配身份证号
时间: 2023-07-24 20:15:55 浏览: 80
(1条消息) 使用正则表达式进行身份证号匹配_正则表达式匹配身份证号码_Yuki-W的博客-CSDN博客.mhtml
可以使用以下正则表达式来匹配身份证号:
```python
import re
id_pattern = r'^[1-9]\d{5}(18|19|20)\d{2}(0\d|1[0-2])([0-2]\d|3[0-1])\d{3}[0-9Xx]$'
id_number = '110101199003074512'
match = re.match(id_pattern, id_number)
if match:
print('身份证号格式正确')
else:
print('身份证号格式错误')
```
这个正则表达式的意思是:
- `^` 表示匹配字符串的开头
- `[1-9]\d{5}` 匹配前6位地区代码,第一位不能为0,后面5位为数字
- `(18|19|20)\d{2}` 匹配出生年份,其中18、19、20是三个可选的前缀,后面必须是4个数字
- `(0\d|1[0-2])` 匹配出生月份,01~09是以0开头的两位数字,10~12是以1开头的两位数字
- `([0-2]\d|3[0-1])` 匹配出生日期,01~09是以0开头的两位数字,10~29是以1或2开头的两位数字,30~31是以3开头的两位数字
- `\d{3}` 匹配顺序码,顺序码是3位数字,从001到999依次递增,不能以0开头
- `[0-9Xx]` 匹配校验码,校验码是一个数字或字母X(大小写均可)
- `$` 表示匹配字符串的结尾
如果要匹配多个身份证号,可以使用`re.findall()`方法来获取所有匹配结果。
阅读全文