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

JS正则如何提取changelog中首个版本下的更新列表内容

问题原因

你之前写的正则存在语法逻辑错误:方括号[]内的规则是单字符集合匹配,[^(##)]本质是匹配非(、非#、非)的单个字符,根本无法实现识别##整个版本标记、截断后续版本内容的效果。

正确实现方案

用以下正则+逻辑即可精准提取第一个版本号对应的更新列表:

const changelog = `
## 11.2.3
* xxx
* xxxx

## 11.2.2
* ttt
* ttt
`;

// 正则规则说明:
// ^\s*##.*\n 匹配开头空白后第一个## 开头的版本标题行,匹配到该行末尾换行
// ([\s\S]*?) 非贪婪捕获标题行之后的所有内容(包含换行)
// (?=\n## |$) 正向预查,匹配到下一个换行+## 的版本标记、或者字符串末尾就停止
const res = changelog.match(/^\s*##.*\n([\s\S]*?)(?=\n## |$)/);
const final = res ? res[1].trim() : '';

console.log(final);

运行后输出结果完全符合预期:

* xxx
* xxxx

适配说明

  • 兼容changelog开头存在多余空行的场景
  • 不管版本号是数字格式还是文本格式都能正常识别
  • 自动在第二个版本块的标题处截断,不会混入后续版本内容
  • 当changelog仅存在一个版本块时,也能正确匹配到内容末尾,不会出现匹配失败的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 06:45:44