为什么在第一种情况下,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但无法找到解释。
由于
答案 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
。