身份证号码的正则表达式python
时间: 2023-11-12 10:00:30 浏览: 251
身份证号码的正则表达式可以使用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
import re
# 18位身份证号码正则表达式
id_card_regex = r'^[1-9]\d{5}(19\d{2}|20[0-2]\d)(0[1-9]|1[0-2])(0[1-9]|[1-2]\d|3[0-1])\d{3}[\dX]$'
# 15位身份证号码正则表达式
id_card_15_regex = r'^[1-9]\d{5}\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]\d|3[0-1])\d{3}$'
# 匹配身份证号码
id_card = '11010119900307771X'
if re.match(id_card_regex, id_card):
print('身份证号码格式正确')
else:
print('身份证号码格式错误')
```
上述代码中,`id_card_regex`是18位身份证号码的正则表达式,`id_card_15_regex`是15位身份证号码的正则表达式。`^`表示匹配字符串的开头,`$`表示匹配字符串的结尾。`\d`表示匹配数字,`[1-9]`表示匹配1-9中的任意一个数字,`[0-2]`表示匹配0-2中的任意一个数字,`[1-2]\d`表示匹配10-29或者20-29中的任意一个数字,`3[0-1]`表示匹配30-31中的任意一个数字。`[\dX]`表示匹配数字或者大写字母X。
居民身份证验证正则表达式
你可以使用以下正则表达式验证中国居民身份证号码:
```python
import re
def validate_id_card(id_card):
pattern = r'^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2][0-9]|3[0-1])\d{3}(\d|X|x)$'
return re.match(pattern, id_card) is not None
```
该正则表达式的解释如下:
- `^[1-9]\d{5}`:前6位为省市县区代码,第一位不能为0。
- `(18|19|20)\d{2}`:接下来的4位为年份,必须以18、19或20开头。
- `(0[1-9]|1[0-2])`:接下来的2位为月份,取值范围为01到12。
- `(0[1-9]|[1-2][0-9]|3[0-1])`:接下来的2位为日期,取值范围为01到31。
- `\d{3}`:接下来的3位为顺序码,可随意取值。
- `(\d|X|x)$`:最后一位为校验码,可以是数字或大写字母"X"。
你可以使用 `validate_id_card` 函数来验证身份证号码是否有效。如果函数返回 `True`,则表示身份证号码格式正确。
阅读全文