var text="$$$ $$ $";
var dummy="hello world";
dummy.replace("world", text);
预期产出:
hello $$$ $$ $
实际输出:
hello $$ $ $
我不明白为什么会这样。善意的帮助。但它似乎与其他符号无关。
感谢
答案 0 :(得分:2)
这是因为$
在正则表达式中具有特殊含义,replace
使用它。
有关详细信息,请参阅此问题:link
答案 1 :(得分:2)
简短的回答是“,因为这就是String.replace的工作原理”。
Mozilla开发网络的文档在这里很有用:
替换字符串可以包含以下特殊替换模式:
$$
插入“$”。$&
插入匹配的子字符串。等等..(有更多的替换规则,但我不打算引用整个MDN页面)
因此,如果我们将您的样本更改为:
var text="$$ ($&) $";
var dummy="hello world";
dummy.replace("world", text);
我们得到的结果是:
"hello $ (world) $"
简而言之$&
(以及其他序列,例如$1
和$'
),意味着特殊的事物,而你逃避普通$
的方式就是将它放在另一个$
。