用javascript和美元符号替换所有

用javascript和美元符号替换所有,javascript,Javascript,我有一个带3个美元符号的字符串,例如$$$Test123。我想在div中显示这个字符串。 问题是,当我使用replace时,我得到的是$$Test123-2个美元符号,而不是3个 例如: var sHtml="<_content_>"; var s="$$$Test"; sHtml= sHtml.replace("<_content_>", s); var sHtml=”“; var s=“$$$Test”; sHtml=sHtml.replace(“,s”); 现在

我有一个带3个美元符号的字符串,例如
$$$Test123
。我想在div中显示这个字符串。 问题是,当我使用
replace
时,我得到的是
$$Test123
-2个美元符号,而不是3个

例如:

var sHtml="<_content_>";
var s="$$$Test";
sHtml= sHtml.replace("<_content_>", s);
var sHtml=”“;
var s=“$$$Test”;
sHtml=sHtml.replace(“,s”);
现在
sHtml
的结果是
$$Test


知道怎么解决吗?

javascript没有默认的全部替换函数。你可以这样写你自己的



function replaceAll(txt, replace, with_this) {
  return txt.replace(new RegExp(replace, 'g'),with_this);

}
我是你的朋友

var sHtml="<_content_>"  
var s="$$$Test";  
sHtml= sHtml.replace("<_content_>", s);
var sHtml=“”
var s=“$$$Test”;
sHtml=sHtml.replace(“,s”);

$
在调用
replace()
的第二个参数的字符串中包含时具有特殊意义。通常,您会使用它来引用原始字符串中匹配的表达式。例如:

"foo foooo".replace(/fo+/g, "$&bar");
//-> "foobar foooobar"
在上面的示例中,
$&
引用回整个匹配,第一个单词是
foo
,第二个单词是
fooo

您的问题源于
$
的特殊含义。为了在匹配中使用文字
$
,必须将两个链接在一起,以便第一个转义第二个。要有3个文字符号,必须将6个链接在一起,如下所示:

var sHtml="<_content_>";
var s="$$$$$$Test";  
sHtml= sHtml.replace("<_content_>", s);
//-> "$$$Test"
var sHtml=”“;
var s=“$$$$$Test”;
sHtml=sHtml.replace(“,s”);
//->“$$$测试”

尝试此replaceAll功能:

它通过正则表达式使用javascript replace函数执行replace all以提高速度,同时消除了在搜索或替换字符串中意外出现正则表达式特殊字符时产生的副作用

使用此函数,您不必担心转义特殊字符。在执行replaceAll之前,所有特殊字符都会预先转义

此函数将生成您期望的输出


尝试一下并提供反馈。

这是一个过于简单的
replaceAll
方法示例-任何在正则表达式中具有特殊函数的符号都需要转义,否则在某些字符串上会遇到问题。这个问题很老,因此,请求者很可能已经找到了解决此问题的方法。