javascript 替换 < 与 < 产生 $lt;?

use*_*633 2 javascript replace xmlhttprequest

我正在尝试使用 javascript 替换函数将 html 实体 < 转换为 < ,就像这样

text = text.replace(/&lt;/g, "<");
text = text.replace(/&gt;/g, ">");
Run Code Online (Sandbox Code Playgroud)

初始文本看起来像这样:

&lt;img /&gt;
Run Code Online (Sandbox Code Playgroud)

我试图让它看起来像这样:

<img />
Run Code Online (Sandbox Code Playgroud)

但是,当我运行上面的代码时,我得到......:

$lt;img />
Run Code Online (Sandbox Code Playgroud)

有趣的是,替换 > 符号效果很好,但是替换 < 符号会产生完全意想不到的结果(那个 $ 符号到底是从哪里来的???)。

我还应该指出,如果我在替换函数中的 < 之前添加一个空格,如下所示:

text = text.replace(/&lt;/g, "< ");
Run Code Online (Sandbox Code Playgroud)

它产生这个:

< img />
Run Code Online (Sandbox Code Playgroud)

不幸的是,它并没有像我想要的那样被解析为 HTML...

编辑:如果有帮助的话,我正在执行此操作的文本是 XMLHttpRequest 的responseText。

put*_*nde 5

当你这样做时,你就覆盖了替换。尝试像链条一样做:

var text = '&lt;img /&gt;';
text = text.replace(/&lt;/g, "<").replace(/&gt;/g, ">");
// Output = <img />
Run Code Online (Sandbox Code Playgroud)

或者您可以将替换分配给text变量:

var text = '&lt;img /&gt;';
text = text.replace(/&lt;/g, "<");
text = text.replace(/&gt;/g, ">");
// Output = <img />
Run Code Online (Sandbox Code Playgroud)