You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何匹配以```包裹的内容,支持结尾```可选(仅在末尾)

正则匹配优化:捕获末尾未闭合的代码块内容

你可以将正则修改为合并两种场景的写法,避免拆分多个捕获组,让后续处理更简洁:

const pattern = /```([^`]+?)(?:```|$)/gm
const data = "here is an exmaple```code1```here is an exmaple```code2```here is an exmaple```code3"

正则说明:

  • (?:```|$) 是一个非捕获组,用来匹配两种终止条件:要么是闭合的```标记,要么是字符串的结尾
  • 合并后的写法只需要读取第一个捕获组match[1]就能拿到所有目标内容,无需判断多个捕获组的有效性

对比你提到的拆分写法:

```([^`]+?)```|```([^`]+?)$

这种写法会生成两个独立的捕获组,匹配闭合内容时取第一个捕获组,匹配末尾未闭合内容时取第二个,处理逻辑相对繁琐。而合并后的正则将两种情况统一,代码处理更直观。

测试验证:运行下面的代码可以得到完整的匹配结果:

let match;
const results = [];
while ((match = pattern.exec(data)) !== null) {
  results.push(match[1]);
}
console.log(results); // 输出: ["code1", "code2", "code3"]

内容的提问来源于stack exchange,提问作者shawhu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 22:52:11