我有以下字符串:
[group][100][250][3][person]
我需要增加数字3
。我尝试了匹配所有3的正则表达式/\[\d+\]/
,但我无法从这里得到任何地方。
答案 0 :(得分:2)
您可以通过匹配所有3个数字值来完成,只需增加第三个值:
var regex = /\[(\d+)\]\[(\d+)\]\[(\d+)\]/g
var input = "[group][100][250][3][person]";
var result = input.replace(regex, function(match,p1,p2,p3){
return "[" + p1 + "][" + p2 + "][" + (parseInt(p3,10) + 1) + "]"
})
console.log(result);

答案 1 :(得分:1)
您可以将.replace
与回调函数结合使用:
var s = "[group][100][250][3][person]";
var repl = s.replace(/((?:\[\d+\]){2}\[)(\d+)\]/,
function($0, $1, $2) { return $1 + (parseInt($2)+1) + ']'; }
);
console.log(repl);
//=> "[group][100][250][4][person]"
答案 2 :(得分:0)
捕获"你的"字符串,请尝试下面的正则表达式:
(?:\[\d+\]){2}\[(\d+)\]
工作原理:
(?:...){2}
- 非捕获组,发生2次。\[\d+\]
- 包含[
,一系列数字和]
。[
,一个捕获组 - 数字序列和]
。您要捕获的文本位于第一个捕获proup中。