身份证号码的python 正则表达式
时间: 2023-10-26 21:08:39 浏览: 83
可以使用以下正则表达式匹配身份证号码:
```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
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('身份证号码不合法')
```