我正在尝试替换用户输入定义的字符串中出现的任何 [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']);
或者
var result = eventLabel.replace(/\[(?:start|end)\]/gi, row['startTime']);
关于Javascript 替换为 RegExp 重复本身?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27450572/