Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 特殊字符导致JS替换出现问题_Javascript_Regex - Fatal编程技术网

Javascript 特殊字符导致JS替换出现问题

Javascript 特殊字符导致JS替换出现问题,javascript,regex,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: Find

我有以下代码:

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);
我的正则表达式/替换:

var findInDom = "<!-- Start: FindMe -->.*?<!-- End: FindMe -->";
var findInDom=“*”;
我的带有变量的正则表达式:

var findInDom = /<!-- Start: " + name + " -->.*?<!-- End: " + name + " -->/;
var findInDom=/.*?/;
---名称是一个变量


你知道为什么不替换它吗?

findInDom
是一个字符串,但你把它当作正则表达式来处理

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

var findInDom = /<!-- Start: FindMe -->.*?<!-- End: FindMe -->/;
var findInDom=/.*?/;
如果要将变量值插入正则表达式,请改用正则表达式构造函数:

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

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

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

var findInDom = /<!-- Start: FindMe -->.*?<!-- End: FindMe -->/;
var findInDom=/.*?/;
如果要将变量值插入正则表达式,请改用正则表达式构造函数:

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

您正在使用字符串替换。请尝试
fileData.replace(新的RegExp(findInDom,'g'),“”)
您正在使用字符串进行替换。尝试
fileData.replace(新的RegExp(findInDom,'g'),“”)

Oops…我的坏消息。如果我想传入一个变量,那会发生什么呢?这就是为什么我要将它用作字符串的原因?你也应该使用它,并且使用
Regex.escape(name)
而不是直接使用
name
,以防
name
包含在Regex中具有特殊含义的字符,例如,如果名称包含一个
.Oops…我的坏。如果我想传入一个变量,那会发生什么呢?这就是为什么我要将它用作字符串的原因。那么您也应该使用它,并使用
Regex.escape(name)
而不是直接使用
name
,以防
name
包含在Regex中具有特殊含义的字符,例如如果name包含
var name = "FindMe";
var findInDom = "<!-- Start: " + name + " -->.*?<!-- End: " + name + " -->";
var regex = new RegExp(findInDom);
var result = fileData.replace(regex);