Вы вызываете функцию, которая увеличивает значение i
один раз, а затем возвращает строку '$1'
.
Чтобы передать значение в функцию, вы можете сделать:
str.replace(/\d/g, function (s) { /* do something with s */ });
Тем не менее, похоже, что вы на самом деле ничего не хотите заменять ... вы просто хотите подсчитать количество цифр. Если это так, то replace
- неправильный инструмент. Попробуйте:
i = str.match(/\d/g).length;