Javascript是否替换为重复自身的RegExp?
我试图替换由用户输入定义的字符串中出现的[start]或[end]。我希望它不区分大小写,因此它也将替换[Start]、[Start]等 下面是一个输入字符串示例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
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");