Javascript 正则表达式替换字符串中的转义$

Javascript 正则表达式替换字符串中的转义$,javascript,regex,Javascript,Regex,我想将字符串dkfj dkfj sflj转换为dkfj woop$dkfj sflj 以下是我尝试过的: var my_string = "dkfj-dkfj-sflj"; var regex = new RegExp("(\\w+)-(\\w+)-(\\w+)", "g"); console.log(my_string.replace(regex, "$1$woop[\$$2]$3"); 我的结果是:dkfj-woop$2-sflj。因为“$”位于“$2”捕获组的前面,所以它会弄乱该捕获组

我想将字符串
dkfj dkfj sflj
转换为
dkfj woop$dkfj sflj

以下是我尝试过的:

var my_string = "dkfj-dkfj-sflj";
var regex = new RegExp("(\\w+)-(\\w+)-(\\w+)", "g");
console.log(my_string.replace(regex, "$1$woop[\$$2]$3");
我的结果是:
dkfj-woop$2-sflj
。因为“$”位于“$2”捕获组的前面,所以它会弄乱该捕获组


假设我希望正则表达式和捕获组字符串的结构保持不变,那么如何正确地转义“$”以使其正常工作?

对于
替换
,这不是转义
$
的方法。反斜杠转义在解析器级别工作,像
replace
这样的函数不能给像
\$
这样的新转义序列赋予特殊意义,因为它们甚至看不到
\$
。字符串
“\$”
与字符串
“$”
完全等效,两者产生相同的字符串。如果要将反斜杠和美元符号传递给函数,则反斜杠本身需要转义:
“\\$”

无论如何,
replace
希望您用
$
转义
$
。您需要
“$1$woop[$$$2]$3”
;一个
$$
用于文本
$
,另一个
$2
用于捕获组


阅读
replace
文档。

这不是为
replace
转义
$
的方法。反斜杠转义在解析器级别工作,像
replace
这样的函数不能给像
\$
这样的新转义序列赋予特殊意义,因为它们甚至看不到
\$
。字符串
“\$”
与字符串
“$”
完全等效,两者产生相同的字符串。如果要将反斜杠和美元符号传递给函数,则反斜杠本身需要转义:
“\\$”

无论如何,
replace
希望您用
$
转义
$
。您需要
“$1$woop[$$$2]$3”
;一个
$$
用于文本
$
,另一个
$2
用于捕获组


阅读
replace
文档。

在替换部件中使用
$
打印文字
$
符号,如果图案包含在正斜杠中,则替换部件中不需要字符类

> var my_string = "dkfj-dkfj-sflj";
undefined
> my_string.replace(/(\w+)-\w+-(\w+)/, "$1-woop$$$1-$2")
'dkfj-woop$dkfj-sflj'

在替换部件中使用
$
打印文字
$
符号,如果图案包含在正斜杠中,则替换部件中不需要字符类

> var my_string = "dkfj-dkfj-sflj";
undefined
> my_string.replace(/(\w+)-\w+-(\w+)/, "$1-woop$$$1-$2")
'dkfj-woop$dkfj-sflj'