特殊字符导致JS替换问题

时间:2016-08-26 20:28:21

标签: javascript regex

我有这段代码:

var fileData = '<div name="test1"><h1>Test Div 1</h1></div><!-- Start: FindMe --><div name="findme"></div><!-- End: FindMe -->';
var findInDom = "<!-- Start: FindMe -->.*?<!-- End: FindMe -->";
var result = fileData.replace(findInDom, "");
console.log(result);

我正在尝试从以下方面找到所有内容:

<!-- Start: FindMe -->

<!-- End: FindMe -->

但是下面这段代码并没有将<!-- Start: FindMe -->中的eveything替换为<!-- End: FindMe -->所以我猜这可能会导致-->特殊字符问题?

我的HTML:

<div name="test1"><h1>Test Div 1</h1></div><!-- Start: FindMe --><div name="findme"></div><!-- End: FindMe -->

我的正则表达式/替换:

var findInDom = "<!-- Start: FindMe -->.*?<!-- End: FindMe -->";

我的正则表达式变量:

var findInDom = /<!-- Start: " + name + " -->.*?<!-- End: " + name + " -->/;

---名称是变量。

为什么这不是替换的任何想法?

2 个答案:

答案 0 :(得分:2)

findInDom是一个字符串,但您将其视为正则表达式。

相反,您希望使用如下的正则表达式:

var findInDom = /<!-- Start: FindMe -->.*?<!-- End: FindMe -->/;

如果要将变量值插入正则表达式,请改用正则表达式构造函数:

var name = "FindMe";
var findInDom = "<!-- Start: " + name + " -->.*?<!-- End: " + name + " -->";
var regex = new RegExp(findInDom);
var result = fileData.replace(regex);

答案 1 :(得分:0)

您正在使用String进行替换。试试fileData.replace(new RegExp(findInDom, 'g'),"")