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

JavaScript中替换所有星号(*)字符的方法(解决注释冲突)

解决JavaScript中替换星号(*)时的正则注释问题

哈哈,这个坑我也踩过!你遇到的问题其实是两个原因叠加导致的:

  • 星号*是正则表达式里的特殊元字符(用来匹配前面的内容零次或多次),要匹配字面的*必须先转义它
  • 你写的/*刚好是JavaScript多行注释的起始标记,直接这么写会让解析器把后面的代码当成注释,直接触发语法报错

给你两种靠谱的解决方法:

方法一:使用转义后的正则字面量

把星号用反斜杠转义,这样既不会触发注释识别,又能让正则匹配字面的星号:

const str = "Hello*World*!";
const result = str.replace(/\*/g, "bar");
console.log(result); // 输出: "Hello barWorld bar!"

这里的\*告诉正则引擎:“我要匹配的是字面的星号字符,不是作为量词使用”,同时/\*/g的写法不会被解析成注释,完美避开语法问题。

方法二:使用RegExp构造函数

如果你习惯用字符串定义正则模式,可以用构造函数的方式,注意字符串里的反斜杠需要额外转义一次:

const str = "Hello*World*!";
const result = str.replace(new RegExp('\\*', 'g'), "bar");
console.log(result); // 输出: "Hello barWorld bar!"

这里'\\*'在字符串里最终会被解析成\*,和正则字面量里的转义效果一致,第二个参数'g'表示全局替换所有匹配项。

简单总结一下:只要记得转义正则里的特殊字符*,同时避免写出会被当成注释的语法,问题就解决啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:27:48