为什么这段代码输出的是
AAC
而不是预期的 A$`C
?console.log('ABC'.replace('B', '$`'));
==>
AAC
如何使其产生预期结果?
AAC
而不是预期的 A$`C
?console.log('ABC'.replace('B', '$`'));
==>
AAC
如何使其产生预期结果?
$
,你需要传递 $$
,因为 $`
:
插入匹配子串之前的字符串部分。
console.log('ABC'.replace('B', "$$`"));
此外,在我发布的参考链接中还有更多的内容。如果你仍然有任何问题或疑问,可能可以在那里找到答案。上面的截图是从答案开始时发布的链接中获取的。
值得一提的是,在我看来,任何不匹配上述模式的模式都不需要转义,因此$
不需要转义,同样的情况也发生在$AAA
上。
在上面的评论中,一个用户问为什么需要用另一个$
“转义”$
:尽管我不确定这一点,但我认为从我们上面所说的来看,任何无效的模式都不会被解释,因此我认为(并怀疑)$$
是一个非常特殊的情况,因为它涵盖了你需要用一个紧随其后的美元符号替换匹配的情况,例如反引号(`
)作为一个例子(或者真正的&
作为另一个例子)。
$
(我认为这可能对任何字符串对象都会产生影响,因为这意味着即使在var a = "hello, $ hey this one is a dollar";
中,你也需要转义$
)。$
具有特殊含义,当需要使用匹配数据在替换中时,可以使用它。只要$$ 插入 "$".
$` 插入匹配子串之前的部分字符串。
$
不会生成特殊的组合,那么它就只会被视为普通字符。但是,你应该始终将其写成$$
,以防将来添加新的$x
组合导致替换失败。
" 属性是非标准的。在替换字符串中使用 "$
" 是标准的。 - nhahtdh$
不能产生正确的结果(即 "$`")吗? - fspinnenhirn$
转义了。 - OJFord