javascript eval()函数中的HTML标记

时间:2011-03-12 15:40:19

标签: javascript html regex str-replace

为什么在第一种情况下,html em标签正常打印,而在第二次测试中,它们会消失。


var text = "text";
eval("var text = text.replace(/(.*)(ex)(.*)/gi,'$1<em>$2</em>$3');");
console.log(text)   //text -> t<em>ex</em>t

但是

var textx = text.replace("/(.*)(ex)(.*)/gi",'$1<em>$2</em>$3');
console.log(textx) //textx -> text

我查看了文档 https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/eval但无法找到解释。

由于

2 个答案:

答案 0 :(得分:2)

var text = "text";
var textx = text.replace(/(.*)(ex)(.*)/gi,'$1<em>$2</em>$3'); 
console.log(textx) //textx -> text

问题是你在正则表达式中使用了一个字符串。 "/(.*)(ex)(.*)/gi" - &gt; /(.*)(ex)(.*)/gi

你在console.log(testx) - &gt;中遇到了拼写错误console.log(textx)

答案 1 :(得分:2)

因为第一个使用正则表达式匹配文本而第二个使用字符串。

"/(.*)(ex)(.*)/gi"内没有"text"。有/(.*)(ex)(.*)/gi