我有一个包含3美元符号的字符串,例如$$$Test123
。我想在div中显示这个字符串。
问题是当我使用replace
时,我得到$$Test123
- 2美元符号而不是3。
示例:
var sHtml="<_content_>";
var s="$$$Test";
sHtml= sHtml.replace("<_content_>", s);
现在sHtml
的结果是$$Test
;
任何想法如何解决?
答案 0 :(得分:8)
javascript没有默认替换所有功能。你可以像这样写自己的
function replaceAll(txt, replace, with_this) {
return txt.replace(new RegExp(replace, 'g'),with_this);
}
答案 1 :(得分:3)
$
包含在调用replace()
的第二个参数的字符串中时具有特殊含义。通常,您可以使用它来引用原始字符串中的匹配表达式。例如:
"foo foooo".replace(/fo+/g, "$&bar");
//-> "foobar foooobar"
在上面的示例中,$&
引用整个匹配,第一个单词为foo
,第二个单词为foooo
。
您的问题源于$
的特殊含义。为了在匹配中使用文字$
,您必须将两个链接在一起,以便第一个转义第二个。要拥有3个文字$
符号,您必须将6链接在一起,如下所示:
var sHtml="<_content_>";
var s="$$$$$$Test";
sHtml= sHtml.replace("<_content_>", s);
//-> "$$$Test"
答案 2 :(得分:1)
行情是你的朋友
var sHtml="<_content_>"
var s="$$$Test";
sHtml= sHtml.replace("<_content_>", s);
答案 3 :(得分:0)
试试这个replaceAll函数:
http://www.dumpsite.com/replaceAll.php
它使用javascript替换函数通过正则表达式执行替换全部速度,同时消除了在搜索或替换字符串中无意中出现正则表达式特殊字符时出现的副作用。
使用此功能,您不必担心转义特殊字符。在执行replaceAll之前,所有特殊字符都会被转义。
此函数将产生您期望的输出。
尝试一下并提供您的反馈。