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

replacing a text with "$$$", gives truncated result in Javascript

本文关键字:结果 替换 文本 Javascript      更新时间:2023-09-26
var text="$$$ $$ $"; 
var dummy="hello world"; 
dummy.replace("world", text);

预期输出:

hello $$$ $$ $

实际输出:

hello $$ $ $

我不明白为什么会这样。 请帮忙。 不过,其他符号似乎不会发生这种情况。

谢谢

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

有关更多详细信息,请参阅此问题:链接

简短的回答是">因为这就是 String.replace 的工作方式"。

Mozilla Development Network 上的文档在这里很有帮助:

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$'(,意味着特殊的东西,而你逃避普通$的方式是在它前面加上另一个$