用“$$$”替换文本,在Javascript中给出截断的结果

时间:2015-03-25 11:17:24

标签: javascript string replace

var text="$$$ $$ $"; 
var dummy="hello world"; 
dummy.replace("world", text);

预期产出:

hello $$$ $$ $

实际输出:

hello $$ $ $

我不明白为什么会这样。善意的帮助。但它似乎与其他符号无关。

感谢

2 个答案:

答案 0 :(得分:2)

这是因为$在正则表达式中具有特殊含义,replace使用它。

有关详细信息,请参阅此问题:link

答案 1 :(得分:2)

简短的回答是“,因为这就是String.replace的工作原理”。

Mozilla开发网络的文档在这里很有用:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replace#Specifying_a_string_as_a_parameter

替换字符串可以包含以下特殊替换模式:

  • $$插入“$”。
  • $&插入匹配的子字符串。

等等..(有更多的替换规则,但我不打算引用整个MDN页面)

因此,如果我们将您的样本更改为:

var text="$$ ($&) $"; 
var dummy="hello world"; 
dummy.replace("world", text);

我们得到的结果是:

"hello $ (world) $"

简而言之$&(以及其他序列,例如$1$'),意味着特殊的事物,而你逃避普通$的方式就是将它放在另一个$