用正则表达式验证出生日期,格式为yyyy-mm-dd或者yyyy-m-d,年份范围在1900年至当前年份,月份范围为1~12月,日期范围为1~31日。
时间: 2024-02-13 07:04:13 浏览: 240
可以使用以下正则表达式验证出生日期:
```
^(19\d{2}|20\d{2})-(0?[1-9]|1[0-2])-(0?[1-9]|[12]\d|3[01])$
```
解释如下:
- `^`:表示字符串的开头
- `(19\d{2}|20\d{2})`:匹配年份,范围为1900-2099年
- `-`:匹配横线
- `(0?[1-9]|1[0-2])`:匹配月份,范围为1-12月。注意,`0?[1-9]`可以匹配1-9月和01-09月两种格式。
- `-`:匹配横线
- `(0?[1-9]|[12]\d|3[01])`:匹配日期,范围为1-31日。注意,`0?[1-9]`可以匹配1-9日和01-09日两种格式。`[12]\d`可以匹配10-29日和30-31日两种格式。`3[01]`可以匹配30日和31日两种格式。
- `$`:表示字符串的结尾
使用示例:
```python
import re
def validate_date(date_string):
pattern = r'^(19\d{2}|20\d{2})-(0?[1-9]|1[0-2])-(0?[1-9]|[12]\d|3[01])$'
return bool(re.match(pattern, date_string))
print(validate_date('1990-01-01')) # True
print(validate_date('1990-1-1')) # True
print(validate_date('2022-13-31')) # False
print(validate_date('2022-12-32')) # False
print(validate_date('1899-12-01')) # False
```
阅读全文