受 Emacs rx 启发的可读正则表达式(TypeScript 版)
来源: rahuljuliato.com — 2026-09-30
概述
作者把 Emacs Lisp 的 rx 宏思想移植到 JavaScript/TypeScript,用一组组合子取代难以解读的正则字符串,并以 semver.org 那条官方正则为例演示。用 RX() 重写之后,匹配行为与原正则完全一致,还额外得到了命名捕获组。
核心要点
- semver.org 的官方正则长得令人望而生畏,日后要改它通常只能从头重新解码、整个重写,或者让 LLM 重写。
- Emacs 的 rx 宏用命名形式的树描述正则,由 Emacs 负责生成最终字符串,长期被视为更可读的替代方案。
- 作者实现了 JS/TS 版本,提供 or、seq、anyOf、zeroOrMore、oneOrMore、named、optional 等组合子。
- 用 RX() 重写 semver 正则后匹配结果一致,并且因为用了 named,额外获得 major/minor/patch/pre/build 等命名分组。
- 文中附有速查表、并排对照示例、完整源码与 gist,方便直接取用。
金句
同样的字符串能匹配,你还额外拿到了命名分组。
👍 0
👎 0
← 返回 Lobsters 首页