我需要用动态值替换html字符串。这个动态值(HTML编码)是替换html字符串中的模式。
var htmlstring = "<div>{NAME}</div>";
var name = "$<Anonymous>" //Encoded form of "$<Anonymous>";
html = htmlstring.replace(/{NAME}/g,name);
我需要&#34; $&lt;匿名&gt;&#34; 作为输出,但我得到&#34; {NAME} lt;匿名&gt;&#34; 作为输出。这是因为&#34; $&amp;&#34;匹配整个比赛&#34; {NAME}&#34;并替换&#34; $&amp;&#34;与&#34; {NAME}&#34;。
任何人都可以建议我如何在JavaScript中实现这一目标?
答案 0 :(得分:4)
在JavaScript中,要替换为$
,您需要使用另一个美元符号转义美元符号,否则$&
将被视为对整个匹配值的反向引用(即{{1}这里)。
您需要使用
{NAME}
var name = "$$<Anonymous>"
^^
模式插入
var htmlstring = "<div>{NAME}</div>"; var name = "$$<Anonymous>" //Encoded form of "$<Annonymous>"; html = htmlstring.replace(/{NAME}/g,name); document.write(html);
插入“$”$$
插入匹配的子字符串。
答案 1 :(得分:3)
来自replace
的文档,$&
插入匹配的子字符串。
您可以使用替换回调来获取替换字符串中的$&
字面值。
var htmlstring = "<div>{NAME}</div>";
var name = "$<Anonymous>" //Encoded form of "$<Annonymous>";
var html = htmlstring.replace(/{NAME}/g, function(m) {
return name;
});
console.log(html);
document.write(html);