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

在JavaScript中如何将注释内的所有空行替换为其他指定字符

JS仅替换块注释内空行实现方案

核心思路是不直接全局匹配空行,先通过正则定位所有/* ... */格式的JS块注释区间,仅对区间内的内容做空行替换,注释外的所有代码(包括原有空行)完全保留不做修改。

实现代码

/**
 * 替换JS块注释内部的空行为指定字符
 * @param {string} source 原始JS代码字符串
 * @param {string} replaceTarget 空行替换后的目标内容,示例默认值为test
 * @returns {string} 处理完成的代码
 */
function replaceCommentEmptyLine(source, replaceTarget = 'test') {
  // 匹配所有跨行块注释:非贪婪匹配避免多个注释时匹配区间错乱
  const blockCommentReg = /\/\*[\s\S]*?\*\//g;
  return source.replace(blockCommentReg, (matchContent) => {
    // 仅在当前匹配到的注释块内替换空行:^\s*$ 匹配整行只有空白字符/无字符的空行,mflag开启多行匹配
    return matchContent.replace(/^\s*$/gm, replaceTarget);
  });
}

// 测试示例
const originalCode = `/*


hello
*/


const x = 'test'
`;

const result = replaceCommentEmptyLine(originalCode);
console.log(result);

运行效果

执行上述代码后输出结果完全符合预期,注释外的空行没有任何改动:

/*
test
test
hello
*/


const x = 'test'

适配说明

  • 如果不需要把全是空格、制表符的“伪空行”做替换,只替换完全无字符的纯空行,可以把注释内的匹配正则从/^\s*$/gm改成/^$/gm
  • 该轻量方案适用于绝大多数常规代码处理场景,如果需要严格区分代码里字符串、单行注释中出现的/* */字符片段避免误匹配,可以基于JS AST解析做更精准的节点遍历处理,相对正则方案会有一定性能开销。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 12:06:17