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

JavaScript中使用$&作为replace替换值不生效问题如何解决

失效原因

JavaScript 中String.prototype.replace()的替换字符串支持$开头的特殊占位符,其中$&的含义是匹配到的整个子串。你传入$&作为替换值时,等价于把匹配到的{{value}}原封不动插回原位置,所以最终输出和原字符串完全一致。
你测试的$1、$a可以正常生效,是因为$1在没有正则捕获组的场景下会被当作普通字符串输出,其他没有命中特殊规则的$开头序列也会原样保留。

解决方法

方法1:转义$字符

要输出字面量$,需要在替换字符串中用$$转义表示单个$,要得到$&,替换值写为$$&即可:

let data = "show {{value}}";
let output = data.replace("{{value}}","$$&");
alert(output); // 输出结果为 show $&

方法2:使用回调函数作为替换值

replace方法第二个参数支持传入函数,函数的返回值会直接作为替换内容,不需要对$做转义处理:

let data = "show {{value}}";
let output = data.replace("{{value}}", () => "$&");
alert(output); // 输出结果为 show $&

内容的提问来源于stack exchange,提问作者Hoa.Tran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:36:03