Увеличение 3-го вхождения цифры в строку с помощью JavaScript

1

У меня есть следующая строка:

[group][100][250][3][person]

и мне нужно увеличить число 3. Я попробовал regex /\[\d+\]/ который соответствует всем 3, но я не мог никуда /\[\d+\]/.

Теги:

3 ответа

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

Вы можете использовать .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]"
0

Чтобы захватить "вашу" строку, попробуйте следующее регулярное выражение:

(?:\[\d+\]){2}\[(\d+)\]

Как это устроено:

  • (?:...){2} - не захватывающая группа, которая происходит 2 раза.
  • \[\d+\] - содержащий [, последовательность цифр и ].
  • [, группа захвата - последовательность цифр и ].

Текст, который вы хотите захватить, находится в первом захвате.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню