Добавьте флаг g
в конец вашего регулярного выражения. В противном случае будет снято только первое совпадение. С g
подгруппы не записываются. Вы им не нужны; внешние скобки в вашем регулярном выражении фактически ничего не делают.
var re = /\$[0-9]+(\.[0-9]{2})?/g;
Вы можете явно запретить захват подгруппы с помощью (?:
, но это не имеет значения с флагом g
.