# -*- coding: utf-8 -*- """Cron 表达式校验工具。 支持标准 5 字段 cron 语法(分 时 日 月 周), 每个字段仅允许 `*` 或对应范围内的数值。 """ import re CRON_FIELD_PATTERNS = [ r'(\*|[0-5]?\d)', # minute: 0-59 r'(\*|[01]?\d|2[0-3])', # hour: 0-23 r'(\*|[1-9]|[12]\d|3[01])', # day of month: 1-31 r'(\*|[1-9]|1[0-2])', # month: 1-12 r'(\*|[0-6])', # day of week: 0-6 ] def validate_cron_expression(expr: str) -> bool: """校验 5 字段 cron 表达式基本格式。 Args: expr: 待校验的 cron 表达式字符串,如 ``"0 3 * * 1"``。 Returns: True 表示格式合法,False 表示不合法。 """ parts = expr.strip().split() if len(parts) != 5: return False for part, pattern in zip(parts, CRON_FIELD_PATTERNS): if not re.fullmatch(pattern, part): return False return True