javascript替换多个正则表达式匹配中的一个

时间:2014-01-18 13:09:40

标签: javascript regex

我正在编写一个读取.txt文件的脚本并将其放入一个看起来像这样的变量:

myString = "blablabla [12], foo bar bar[2], bar foo[34], hello hello [95], wheres my sandwich [2745]";

我设法生成一个包含括号之间所有值的数组,为此我使用了这行代码:parameters = myString.match(/[^[]+(?=\])/g);

所以现在我可以通过调用parameters[n]

轻松获得这些值

我现在要做的就是在[]之间更改其中一个元素的值,并将其注入字符串,但我不知道该怎么做。 当然,如果我使用以下行:

myString = myString.replace(/[^[]+(?=\])/g, "newValue");

所有元素都将被替换,所以我最终会得到一个像blablabla [newValue], foo bar bar[newValue], bar foo[newValue], hello hello [newValue], wheres my sandwich [newValue]

这样的字符串

1 个答案:

答案 0 :(得分:3)

String.prototype.replace不仅接受字符串,还接受替换。如果传递函数,则函数的返回值将用作替换字符串。

使用该功能:

var nth = 0;
myString.replace(/[^[]+(?=\])/g, function(match) {
    // Change only the 2nd matched string.
    return ++nth == 2 ? "newValue" : match;
});
// => "blablabla [12], foo bar bar[newValue], bar foo[34], hello hello [95],
//     wheres my sandwich [2745]"