输入如下:
path = "html body div div:eq(2) p:eq(4)"
我想将括号中的所有数字减1,得到一个像
这样的字符串path = "html body div div:eq(1) p:eq(3)"
我该怎么办?提前谢谢。
答案 0 :(得分:5)
Prinzhorn的答案更简洁,但我想提供一个“更严格”的替代方案(也只考虑括号内的数字,而不是任何地方)。
path = path.replace(/\((\d+)\)/g, function(match, group1) {
return "(" + (parseInt(group1,10) - 1) + ")";
});
注意:当您提供函数作为replace
的第二个参数时,您会收到完整匹配并将每个捕获组作为参数,并且无论您返回的是什么,都会插入原始匹配的位置。在这里,我匹配文字(
和)
,在中间解析[捕获]数字并递减它。
答案 1 :(得分:3)
str.replace(/\d+/g, function(a) {return a - 1;});