无法取代"?"通过" $'",它太奇怪了

时间:2015-08-13 04:47:35

标签: javascript

我想替换下面的陈述:

"(?)".replace("?", "$'")

我的期望是:

($')

但结果实际上是:

())

如何更正我的代码?

2 个答案:

答案 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 "$'" })

即。使用函数(返回替换字符串 - 不需要转义)作为第二个参数。

请参阅https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_function_as_a_parameter

  

函数的结果(返回值)将用作替换   串。 (注意:上述特殊替换模式没有   在这种情况下适用。)