Javascript替换为RegExp重复自己?

时间:2014-12-12 19:15:44

标签: javascript regex replace repeat

我试图在用户输入定义的字符串中替换[start]或[end]的任何出现。我希望这个不区分大小写,所以它也会取代[Start],[STARt]等。

示例输入字符串是

var eventLabel = "BPY [start]";

这是我正在尝试的

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

以下是替换

后的结果内容
BPY [replacedreplacedreplacedreplacedreplaced]

然而,它在循环内部,当我在第一次替换后直接警告结果时就是这样。它也留下了括号,但只替换了奇怪的内容。

有人知道发生了什么事吗?

2 个答案:

答案 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]表示“替换star中的任何一个”。

你需要转义括号:

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