身份证号码的python 正则表达式
时间: 2023-10-26 08:08:39 浏览: 137
可以使用以下正则表达式匹配身份证号码:
```python
import re
pattern = r'^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]\d|3[0-1])\d{3}(\d|X|x)$'
id_number = '110101199003074672'
if re.match(pattern, id_number):
print('是有效的身份证号码')
else:
print('不是有效的身份证号码')
```
输出:
```
是有效的身份证号码
```
正则表达式解释:
- `^`:匹配字符串开头
- `[1-9]`:匹配第一位,不能为0
- `\d{5}`:匹配地区码,共5位数字
- `(18|19|20)\d{2}`:匹配年份,以18、19或20开头,后面跟着2位数字
- `(0[1-9]|1[0-2])`:匹配月份,01~12之间的数字,注意前面有一个0
- `(0[1-9]|[1-2]\d|3[0-1])`:匹配日期,01~31之间的数字,注意前面有一个0
- `\d{3}`:匹配顺序码,共3位数字
- `(\d|X|x)`:匹配校验码,可以是数字或字母X(大小写均可)
- `$`:匹配字符串结尾
相关问题
身份证号码的正则表达式python
身份证号码的正则表达式可以使用Python内置的re模块来实现,具体代码如下:
```python
import re
pattern = r'^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]\d|3[0-1])\d{3}[\dXx]$'
id_card = '110101199003074518'
if re.match(pattern, id_card):
print('身份证号码格式正确')
else:
print('身份证号码格式错误')
```
其中,正则表达式的含义如下:
- `^`:匹配字符串的开头
- `[1-9]`:匹配第一位数字,不能为0
- `\d{5}`:匹配6-10位数字
- `(18|19|20)\d{2}`:匹配11-14位数字,表示出生年份,必须是18、19或20开头的4位数字
- `(0[1-9]|1[0-2])`:匹配15-16位数字,表示出生月份,必须是01-12之间的2位数字
- `(0[1-9]|[1-2]\d|3[0-1])`:匹配17-18位数字,表示出生日期,必须是01-31之间的2位数字
- `\d{3}`:匹配19-21位数字,表示顺序码,可以是任意3位数字
- `[\dXx]`:匹配最后一位数字或字母X或x
- `$`:匹配字符串的结尾
如果身份证号码符合以上规则,则返回“身份证号码格式正确”,否则返回“身份证号码格式错误”。
python身份证号的正则表达式
以下是Python中身份证号的正则表达式:
```python
import re
# 18位身份证号正则表达式
pattern = re.compile(r'[1-9]\d{5}(19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{3}[0-9Xx]')
# 测试用例
id_card = '11010119900307771X'
result = pattern.match(id_card)
if result:
print('身份证号格式正确')
else:
print('身份证号格式错误')
```
输出结果为:身份证号格式正确。
阅读全文