</>YZIF
博客

正则表达式验证 Cron:让定时任务更可靠

2026-06-18

为什么要验证 Cron 表达式?

一个输错的 cron 表达式可能导致备份未执行、作业未触发,或者最坏情况——生产事故。例如,`0 0 * * *` 在午夜运行,但 `0 0 * **`(打错一个星号)永远不会运行。正则表达式验证可以在部署前捕获这些错误。

常用 Cron 正则验证模式

1. 基础 5 字段验证

最简单的模式检查你是否有恰好 5 个空格分隔的字段:

^\S+ \S+ \S+ \S+ \S+$

2. 字段级验证

更健壮的模式逐个验证每个字段的值范围:

^(?:
  (?:[0-5]?\d|\*)   # 分钟: 0-59
  \s+
  (?:[01]?\d|2[0-3]|\*) # 小时: 0-23
  \s+
  (?:0?[1-9]|[12]\d|3[01]|\*) # 日期: 1-31
  \s+
  (?:0?[1-9]|1[0-2]|\*) # 月份: 1-12
  \s+
  (?:0?[0-7]|\*)    # 星期: 0-7
)$

3. 步长值验证

验证步长值语法(例如 `*/15`、`1-10/2`):

^(\*|\d+(-\d+)?)(/\d+)?(,(\*|\d+(-\d+)?)(/\d+)?)*$

常见无效 cron 表达式示例

表达式问题检测结果
`0 24 * * *`小时 24 不存在(范围 0-23)❌ 失败
`0 0 * * 8`星期 8 不存在(范围 0-7)❌ 失败
`60 * * * *`分钟 60 不存在(范围 0-59)❌ 失败
`* * * *`缺少第 5 个字段❌ 失败
`0 0 32 * *`日期 32 不存在❌ 失败

使用 YZIF 的正则-Cron 工具

YZIF 的 正则 & Cron 工具 将正则测试和 cron 解析整合在一个界面中。

验证工作流

1. **在 cron 解析器部分输入表达式** 2. **查看人类可读描述** — "工作日上午 09:00 执行" 3. **用正则测试** — 输入验证模式并测试你的 cron 字符串 4. **检查下次执行时间** — 工具计算调度将何时触发

最佳实践

1. **部署前始终验证** — 一个错字可能破坏整个调度 2. **使用字段级正则** — 捕获基本模式匹配遗漏的超范围值 3. **检查接下来 5 次执行时间** — 确认调度符合预期 4. **记录复杂表达式** — 在 crontab 文件中添加注释 5. **测试时区敏感调度** — 特别是 `@daily` 和 `0 0 * * *` 的区别

立即尝试

使用 YZIF 的 正则 & Cron 工具 在部署前验证你的 cron 表达式。将正则模式与 cron 解析结合,让你对定时任务充满信心。