2

输入是这样的:

path = "html body div div:eq(2) p:eq(4)"

我想将括号中的所有数字减一,并得到一个字符串

path = "html body div div:eq(1) p:eq(3)"

我应该怎么办?提前致谢。

4

2 回答 2

5

Prinzhorn 的回答更简洁,但我想提供一个“更严格”的替代方案(也只考虑括号内的数字,而不是任何地方)。

path = path.replace(/\((\d+)\)/g, function(match, group1) {
    return "(" + (parseInt(group1,10) - 1) + ")";
});

注意:当您提供一个函数作为 的第二个参数时replace,您会收到完整匹配和每个捕获组作为参数,并且您返回的任何内容都会插入到原始匹配所在的位置。在这里,我匹配文字(and ),解析中间的 [captured] 数字并将其递减。

于 2013-05-11T08:59:52.923 回答
3
str.replace(/\d+/g, function(a) {return a - 1;});
于 2013-05-11T08:53:18.690 回答