let str = '$$double_dollars$$'
console.log(str.replace('$$double_dollars$$', '$$no_double_dollars$$'));
// => $no_double_dollars$
// expected $$no_double_dollars$$
为什么会发生这种情况?如何解决此错误?
根据String.prototype.replace
的MDN文档(如@Alex所述),有相应评估的特殊模式列表,其中一个是您使用的。P>
特殊模式如下:
-
$$
插入$
有关特殊模式的完整列表,请参见MDN文档。
@h.h.figueiredo发表了评论,您可以逃脱美元符号或遵循此答案之后秒发布的答案之一。
请参阅:mdn -string.prototype.replace#将函数指定为参数
替换字符串可以包括以下特殊替换模式:
图案插入$$插入" $"。$&插入匹配的子字符串。$`插入匹配的子字符串之前的字符串部分。$'插入匹配的子字符串之后的字符串部分。$ n其中n是一个正整数小于100,插入了第n个括号 submatch字符串,前提是第一个参数是regexp对象。 请注意,这是1个索引。
let str = '$$double_dollars$$'
console.log(str.replace('$$double_dollars$$', '$$$$yes_double_dollars$$$$'));
// => $$yes_double_dollars$$
请参阅将替换字符串传递给replace
的文档。
$
是一个特殊的角色。要表达字面的$
,请使用$$
。
let str = '$$double_dollars$$'
console.log(str.replace('$$double_dollars$$', '$$$$result$$$$'));