Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.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是否替换为重复自身的RegExp?_Javascript_Regex_Replace_Repeat - Fatal编程技术网

Javascript是否替换为重复自身的RegExp?

Javascript是否替换为重复自身的RegExp?,javascript,regex,replace,repeat,Javascript,Regex,Replace,Repeat,我试图替换由用户输入定义的字符串中出现的[start]或[end]。我希望它不区分大小写,因此它也将替换[Start]、[Start]等 下面是一个输入字符串示例 var eventLabel = "BPY [start]"; 这就是我正在尝试的 var result = eventLabel.replace(new RegExp("[start]", "gi"), "replaced"); 以下是替换后的结果内容 BPY [replacedreplacedreplacedreplacedr

我试图替换由用户输入定义的字符串中出现的[start]或[end]。我希望它不区分大小写,因此它也将替换[Start]、[Start]等

下面是一个输入字符串示例

var eventLabel = "BPY [start]";
这就是我正在尝试的

var result = eventLabel.replace(new RegExp("[start]", "gi"), "replaced");
以下是替换后的结果内容

BPY [replacedreplacedreplacedreplacedreplaced]
然而,当我在第一次替换后直接警告结果时,它是在循环内部的。它还保留了括号,但只替换了奇怪的内容


有人知道发生了什么吗?

你需要转义
[
符号,因为
[
在正则表达式中是一个特殊的元字符,意味着字符类的开始。要匹配
[start]
[end]
字符串,别忘了将它们放在下面这样的组中

var result = eventLabel.replace(new RegExp("\\[(?:start|end)\\]", "gi"), row['startTime']);


[start]
表示“替换
s
t
a
r
中的任何一个”

您需要避开括号:

var result = eventLabel.replace(new RegExp("\\[(start|end)\\]", "gi"), "replaced");

这里没有很好的理由使用
newregexp
,当然也有很好的理由不使用它。相反:
var result=eventLabel.replace(/\[(?:start | end)\]/gi,row['startTime']);
var result = eventLabel.replace(new RegExp("\\[(start|end)\\]", "gi"), "replaced");