cron-regex-buddy — cron 与正则中文向导
把看不懂的 cron 表达式或正则表达式讲清楚,或者把中文需求翻译成正确的 cron / 正则,并自检合法性。
何时触发
用户说:
/cron-regex-buddy
- "解释这个 cron:
0 9 * * 1-5"
- "这个正则什么意思:
^\d{3}-\d{4}$"
- "帮我写个匹配手机号的正则"
- "我想每天早上 9 点跑一次,cron 怎么写"
- "生成一个 cron 表达式" / "cron 怎么填"
- "这个表达式对吗"
两种工作模式
模式 A:解释模式
用户给出一个 cron 或正则 → 逐段拆解,中文讲清每部分含义,并给出具体匹配示例。
流程:
判断输入是 cron 还是正则(或两者都有)。
先用 bin/validate.sh 自检:
bash <skill>/bin/validate.sh cron "<表达式>"
bash <skill>/bin/validate.sh regex "<模式>"
若 exit 2,把错误原因中文报给用户,不继续解释。
解释 cron 时按字段顺序逐一说明:
| 字段 |
位置 |
含义 |
| 分钟 |
1 |
0–59 |
| 小时 |
2 |
0–23 |
| 日 |
3 |
1–31 |
| 月 |
4 |
1–12 |
| 星期 |
5 |
0–7(0 和 7 均为周日) |
| 秒(可选) |
6 |
0–59,仅部分调度器支持 |
常用符号说明:* 任意值、, 多值列举、- 范围、/ 步进、? 日/星期互斥占位(Quartz 风格)、L 最后一天、# 第 N 个星期 X。
解释正则时按从左到右逐组/逐字符说明,并给出 2–3 个匹配示例与 1–2 个不匹配示例。
时区提醒:解释 cron 时指出"cron 以服务器本地时区为准,未指定时区时请确认系统时区设置。"
输出格式(cron 示例):
表达式:0 9 * * 1-5
逐字段解释:
- 分钟:0 → 整点(第 0 分)
- 小时:9 → 早上 9 点
- 日: * → 每天
- 月: * → 每月
- 星期:1-5 → 周一到周五
含义:每个工作日(周一至周五)早上 9:00 执行。
匹配时刻示例:2026-06-08 09:00(周一)、2026-06-09 09:00(周二)
不触发时刻:2026-06-06 09:00(周六)、2026-06-08 09:30(非整点)
⚠️ 时区:cron 以服务器本地时区为准。如需北京时间请确认 TZ=Asia/Shanghai。
输出格式(正则示例):
表达式:^\d{3}-\d{4}$
逐组解释:
- ^ → 字符串开头锚点
- \d{3} → 恰好 3 位数字(0–9)
- - → 字面连字符
- \d{4} → 恰好 4 位数字
- $ → 字符串结尾锚点
匹配示例:123-4567、000-9999
不匹配示例:12-4567(首段只有 2 位)、123-456a(含字母)
引擎说明:\d 在 PCRE/Python/JS 中等同 [0-9];在 POSIX ERE(grep -E)中无效,须改用 [0-9]{3}-[0-9]{4}。
模式 B:生成模式
用户用中文描述需求 → 产出 cron 或正则 + 解释 + 注意事项。
流程:
- 明确需求:时间规律(cron)还是文本匹配规则(正则)?二义时先问清楚。
- 生成表达式。
- 立刻用
bin/validate.sh 自检,若失败说明原因并修正后再给出。
- 按模式 A 的格式完整解释生成结果。
- 输出注意事项:
cron 注意事项清单(按需挑选相关项):
- 时区:明确指出基于哪个时区,如需特定时区给出设置方式(如
TZ=Asia/Shanghai)。
- 星期 0/7 差异:不同调度器(Linux crontab / Quartz / AWS EventBridge)对 0=周日或 7=周日的处理可能不同,需确认。
- 6 段 vs 5 段:Quartz/Spring 支持 6 段(含秒),标准 POSIX crontab 只有 5 段。
- 月底陷阱:
30 日在 2 月不存在,L 才表示"月末最后一天"。
- 分钟与小时顺序:新手常把分钟和小时写反。
正则注意事项清单(按需挑选相关项):
- 引擎差异:PCRE / Python
re / JavaScript / POSIX ERE 对 \d \w \s 等支持不同。
- 贪婪 vs 非贪婪:
.* 默认贪婪,.*? 才是非贪婪。
- 转义:在某些语言中正则字符串本身需要双重转义(如 Java
\\d)。
- 锚点:没有
^ $ 的模式是"包含匹配"而非"完整匹配"。
- Unicode:
\d 在部分引擎中匹配全角数字,如需限制请用 [0-9]。
输出格式(生成模式):
需求:每周一凌晨 2:30 执行
生成结果:
cron:30 2 * * 1
逐字段解释:(同模式 A)
注意事项:
- 星期字段 1 = 周一(Linux crontab 约定;Quartz 中 1 = 周日,请按调度器文档确认)。
- 时区以服务器本地时区为准。
硬规则
- 先 validate,后解释/给出:生成或解释任何表达式前,必须先跑
bin/validate.sh 自检。exit 2 则停下报错,不继续输出。
- 不确定语义必须说明:如 cron 星期 0/7 差异、正则引擎差异等,不能悄悄选一个当成通用。
- 只输出已确认合法的表达式:validate 通过后再输出,同时附完整解释。
- 不臆造:没把握的引擎特性/平台行为,明确说"请查阅 XX 文档确认"。
- 全程中文:解释/注意事项用简体中文;cron 表达式/正则本身保持原样;命令行示例保持英文。
bin 脚本
# 校验 cron(5 或 6 段,粗校验字符)
bash <skill>/bin/validate.sh cron "0 9 * * 1-5"
# 校验正则(用 grep -E 干跑)
bash <skill>/bin/validate.sh regex "^\d{3}-\d{4}$"
exit 0 = 合法;exit 2 = 非法,附中文错误信息;exit 1 = 用法错误。
边界
- cron 校验是粗校验(字段数 + 字符白名单),不做语义校验(如"分钟最大 59")。语义层面的合理性由 Claude 判断并在解释中说明。
- 正则校验基于 POSIX ERE(
grep -E)。若用户目标引擎是 PCRE/Python/JS,校验通过不代表在那些引擎中完全合法,需额外提示。
- 不执行用户给出的正则以匹配真实数据,只做合法性干跑。
1---2name: cron-regex-buddy3description: 用中文解释或生成 cron 表达式与正则表达式,逐字段/逐组讲清含义并给出匹配示例。触发词:'/cron-regex-buddy'、'解释这个 cron'、'帮我写个正则'、'这个正则什么意思'、'生成一个 cron'。Use when the user wants to explain or generate cron expressions or regular expressions in Chinese.4---56# cron-regex-buddy — cron 与正则中文向导78把看不懂的 cron 表达式或正则表达式讲清楚,或者把中文需求翻译成正确的 cron / 正则,并自检合法性。910## 何时触发1112用户说:13- `/cron-regex-buddy`14- "解释这个 cron:`0 9 * * 1-5`"15- "这个正则什么意思:`^\d{3}-\d{4}$`"16- "帮我写个匹配手机号的正则"17- "我想每天早上 9 点跑一次,cron 怎么写"18- "生成一个 cron 表达式" / "cron 怎么填"19- "这个表达式对吗"2021## 两种工作模式2223### 模式 A:解释模式2425用户给出一个 cron 或正则 → 逐段拆解,中文讲清每部分含义,并给出具体匹配示例。2627**流程:**281. 判断输入是 cron 还是正则(或两者都有)。292. **先用 `bin/validate.sh` 自检**:30 ```bash31 bash <skill>/bin/validate.sh cron "<表达式>"32 bash <skill>/bin/validate.sh regex "<模式>"33 ```34 若 exit 2,把错误原因中文报给用户,不继续解释。353. 解释 cron 时按字段顺序逐一说明:3637 | 字段 | 位置 | 含义 |38 |------|------|------|39 | 分钟 | 1 | 0–59 |40 | 小时 | 2 | 0–23 |41 | 日 | 3 | 1–31 |42 | 月 | 4 | 1–12 |43 | 星期 | 5 | 0–7(0 和 7 均为周日) |44 | 秒(可选) | 6 | 0–59,仅部分调度器支持 |4546 常用符号说明:`*` 任意值、`,` 多值列举、`-` 范围、`/` 步进、`?` 日/星期互斥占位(Quartz 风格)、`L` 最后一天、`#` 第 N 个星期 X。47484. 解释正则时按从左到右逐组/逐字符说明,并给出 2–3 个匹配示例与 1–2 个不匹配示例。495. **时区提醒**:解释 cron 时指出"cron 以服务器本地时区为准,未指定时区时请确认系统时区设置。"5051**输出格式(cron 示例):**52```53表达式:0 9 * * 1-55455逐字段解释:56- 分钟:0 → 整点(第 0 分)57- 小时:9 → 早上 9 点58- 日: * → 每天59- 月: * → 每月60- 星期:1-5 → 周一到周五6162含义:每个工作日(周一至周五)早上 9:00 执行。6364匹配时刻示例:2026-06-08 09:00(周一)、2026-06-09 09:00(周二)65不触发时刻:2026-06-06 09:00(周六)、2026-06-08 09:30(非整点)6667⚠️ 时区:cron 以服务器本地时区为准。如需北京时间请确认 TZ=Asia/Shanghai。68```6970**输出格式(正则示例):**71```72表达式:^\d{3}-\d{4}$7374逐组解释:75- ^ → 字符串开头锚点76- \d{3} → 恰好 3 位数字(0–9)77- - → 字面连字符78- \d{4} → 恰好 4 位数字79- $ → 字符串结尾锚点8081匹配示例:123-4567、000-999982不匹配示例:12-4567(首段只有 2 位)、123-456a(含字母)8384引擎说明:\d 在 PCRE/Python/JS 中等同 [0-9];在 POSIX ERE(grep -E)中无效,须改用 [0-9]{3}-[0-9]{4}。85```8687---8889### 模式 B:生成模式9091用户用中文描述需求 → 产出 cron 或正则 + 解释 + 注意事项。9293**流程:**941. 明确需求:时间规律(cron)还是文本匹配规则(正则)?二义时先问清楚。952. 生成表达式。963. **立刻用 `bin/validate.sh` 自检**,若失败说明原因并修正后再给出。974. 按模式 A 的格式完整解释生成结果。985. 输出注意事项:99100**cron 注意事项清单(按需挑选相关项):**101- 时区:明确指出基于哪个时区,如需特定时区给出设置方式(如 `TZ=Asia/Shanghai`)。102- 星期 0/7 差异:不同调度器(Linux crontab / Quartz / AWS EventBridge)对 0=周日或 7=周日的处理可能不同,需确认。103- 6 段 vs 5 段:Quartz/Spring 支持 6 段(含秒),标准 POSIX crontab 只有 5 段。104- 月底陷阱:`30` 日在 2 月不存在,`L` 才表示"月末最后一天"。105- 分钟与小时顺序:新手常把分钟和小时写反。106107**正则注意事项清单(按需挑选相关项):**108- 引擎差异:PCRE / Python `re` / JavaScript / POSIX ERE 对 `\d` `\w` `\s` 等支持不同。109- 贪婪 vs 非贪婪:`.*` 默认贪婪,`.*?` 才是非贪婪。110- 转义:在某些语言中正则字符串本身需要双重转义(如 Java `\\d`)。111- 锚点:没有 `^` `$` 的模式是"包含匹配"而非"完整匹配"。112- Unicode:`\d` 在部分引擎中匹配全角数字,如需限制请用 `[0-9]`。113114**输出格式(生成模式):**115```116需求:每周一凌晨 2:30 执行117118生成结果:119 cron:30 2 * * 1120121逐字段解释:(同模式 A)122123注意事项:124- 星期字段 1 = 周一(Linux crontab 约定;Quartz 中 1 = 周日,请按调度器文档确认)。125- 时区以服务器本地时区为准。126```127128---129130## 硬规则1311321. **先 validate,后解释/给出**:生成或解释任何表达式前,必须先跑 `bin/validate.sh` 自检。`exit 2` 则停下报错,不继续输出。1332. **不确定语义必须说明**:如 cron 星期 0/7 差异、正则引擎差异等,不能悄悄选一个当成通用。1343. **只输出已确认合法的表达式**:validate 通过后再输出,同时附完整解释。1354. **不臆造**:没把握的引擎特性/平台行为,明确说"请查阅 XX 文档确认"。1365. **全程中文**:解释/注意事项用简体中文;cron 表达式/正则本身保持原样;命令行示例保持英文。137138## bin 脚本139140```bash141# 校验 cron(5 或 6 段,粗校验字符)142bash <skill>/bin/validate.sh cron "0 9 * * 1-5"143144# 校验正则(用 grep -E 干跑)145bash <skill>/bin/validate.sh regex "^\d{3}-\d{4}$"146```147148exit 0 = 合法;exit 2 = 非法,附中文错误信息;exit 1 = 用法错误。149150## 边界151152- cron 校验是**粗校验**(字段数 + 字符白名单),不做语义校验(如"分钟最大 59")。语义层面的合理性由 Claude 判断并在解释中说明。153- 正则校验基于 POSIX ERE(`grep -E`)。若用户目标引擎是 PCRE/Python/JS,校验通过不代表在那些引擎中完全合法,需额外提示。154- 不执行用户给出的正则以匹配真实数据,只做合法性干跑。