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

JavaScript字符串多词替换问题:RegExp全局替换失效求助

问题原因及解决方案

嘿,我一眼就瞅出问题出在哪了——你没处理正则里的特殊字符!

在正则表达式里,$是个特殊的元字符,它的作用是匹配字符串的结尾位置,而不是字面意义上的美元符号。你直接写"$times"作为正则模式的话,引擎会把$当成规则符号,而不是你要匹配的$字符,自然找不到模板里的$times啦。

修正方案

有两种简单的解决办法:

方法1:转义字符串里的$

因为在JS字符串中,要表示一个反斜杠\需要写两个\\,所以我们把$转义成\\$,让正则引擎把它当成字面量处理:

var _tpl = "time working $times, not now $times"
var reg = "\\$times" // 转义$符号
var regexp = new RegExp(reg, "g")
var replaceFor = 1
var _newTpl = _tpl.replace(regexp, replaceFor)
console.log(_newTpl) // 输出:time working 1, not now 1

方法2:使用正则字面量(更推荐)

用正则字面量的写法时,只需要加一个反斜杠转义$就行,不用处理字符串的双重转义,更直观:

var _tpl = "time working $times, not now $times"
var regexp = /\$times/g // 直接转义$
var replaceFor = 1
var _newTpl = _tpl.replace(regexp, replaceFor)
console.log(_newTpl)

这两种方法都能让正则正确匹配到所有的$times,然后完成全局替换~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 04:16:35