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'