个人随笔
技术思考

先转义,还是先匹配?

手写 Markdown 渲染器时遇到一个诡异问题:引用块(> 开头)怎么都不渲染,标题、列表却一切正常。

排查过程

正则写了 /^> (.*)$/gm,测试字符串单独跑没问题,一进流水线就失效。

打了几次日志才发现:流水线是先做 HTML 转义,再做块级匹配。> 在转义后变成了 >,后面的正则自然永远匹配不上。

根因

原文:   > 引用一句话
转义后: > 引用一句话
正则:   /^> /     ← 永远落空

修复方法很直接:匹配规则写成转义后的形态 /^> ?/。

教训

这类「顺序依赖」的 bug 最折磨人,因为每一环单独看都是对的。

← 返回全部随笔