You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何使用正则表达式校验YYYY-MM-DD HH:MM:SS格式的日期字符串

基础格式校验实现

你写的正则规则是对的,只需要补充首尾定位符^和$,确保是对整个字符串做匹配,避免出现字符串前后带多余内容也通过校验的问题。Python中可以直接用re模块的fullmatch方法实现校验:

import re

def check_date_format(date_str):
    # ^ 匹配字符串开头,$ 匹配字符串结尾
    date_pattern = r'^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$'
    # fullmatch要求整个字符串完全匹配正则规则,匹配失败返回None
    return bool(re.fullmatch(date_pattern, date_str))

测试效果:

# 合法格式
date_string1 = '2018-05-01 00:00:00'
print(check_date_format(date_string1))  # 输出 True

# 非法格式
date_string2 = '2018-05 00:00:00'
print(check_date_format(date_string2))  # 输出 False

如果你需要在校验通过的同时提取年、月、日、时、分、秒的数值,保留正则里的分组即可:

def check_and_extract(date_str):
    date_pattern = r'^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$'
    match_res = re.fullmatch(date_pattern, date_str)
    if not match_res:
        return False, None
    # groups()返回所有分组的匹配结果,顺序对应年、月、日、时、分、秒
    return True, match_res.groups()

进阶:同时校验日期合法性

上面的正则只能校验格式是否匹配,无法判断日期本身是否合法,比如2023-13-40 25:70:00这种格式符合但实际不存在的日期,正则也会返回True。如果需要同时校验日期有效,可以结合datetime模块实现:

import re
from datetime import datetime

def check_date_full(date_str):
    date_pattern = r'^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}$'
    if not re.fullmatch(date_pattern, date_str):
        return False
    try:
        # 用datetime的strptime方法转成日期对象,格式不合法会抛出ValueError
        datetime.strptime(date_str, '%Y-%m-%d %H:%M:%S')
        return True
    except ValueError:
        return False

内容的提问来源于stack exchange,提问作者meuhfunk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:36:05