我想替换下面的陈述:
"(?)".replace("?", "$'")
我的期望是:
($')
但结果实际上是:
())
如何更正我的代码?
答案 0 :(得分:6)
如果您想要替换为$$'
,则需要使用$'
,因为$'
是一种特殊的替代模式
插入匹配子字符串后面的字符串部分。
所有可用的模式都是:
$$插入“$”。
$&:插入匹配的子字符串。
$`:插入匹配子字符串之前的字符串部分。
$':插入匹配子字符串后面的字符串部分。
$ n或$ nn:其中n或nn是十进制数字,插入第n个带括号的子匹配字符串,前提是第一个参数是RegExp对象。
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/replace
答案 1 :(得分:4)
你需要
"(?)".replace("?", "$$'")
$'是一种特殊的替换模式(插入匹配的子字符串之前的字符串部分。)并且需要使用$进行转义。
如何在没有转义序列的情况下执行此操作
如果您不想替换替换字符串中的所有$,您还可以执行类似
的操作"(?)".replace("?", function() { return "$'" })
即。使用函数(返回替换字符串 - 不需要转义)作为第二个参数。
函数的结果(返回值)将用作替换 串。 (注意:上述特殊替换模式没有 在这种情况下适用。)