我试图在用户输入定义的字符串中替换[start]或[end]的任何出现。我希望这个不区分大小写,所以它也会取代[Start],[STARt]等。
示例输入字符串是
var eventLabel = "BPY [start]";
这是我正在尝试的
var result = eventLabel.replace(new RegExp("[start]", "gi"), "replaced");
以下是替换
后的结果内容BPY [replacedreplacedreplacedreplacedreplaced]
然而,它在循环内部,当我在第一次替换后直接警告结果时就是这样。它也留下了括号,但只替换了奇怪的内容。
有人知道发生了什么事吗?
答案 0 :(得分:1)
您需要转义[
符号,因为[
是正则表达式中的特殊元字符,表示字符类的开头。要匹配[start]
或[end]
字符串,请不要忘记将它们放在如下所示的组中。
var result = eventLabel.replace(new RegExp("\\[(?:start|end)\\]", "gi"), row['startTime']);
OR
var result = eventLabel.replace(/\[(?:start|end)\]/gi, row['startTime']);
答案 1 :(得分:1)
[start]
表示“替换s
,t
,a
或r
中的任何一个”。
你需要转义括号:
var result = eventLabel.replace(new RegExp("\\[(start|end)\\]", "gi"), "replaced");