Welp, я рискну бросить мое предложение в банк:
Примечание: исправлено
stringWithNumbers = stringwithNumbers.replace(/(\d+),(?=\d{3}(\D|$))/g, "$1");
должно превратиться
1,234,567.12
1,023.99
1,0,2,3.99
the dang thing costs $1,205!!
95,5,0,432
12345,0000
1,2345
в:
1234567.12
1023.99
1,0,2,3.99
the dang thing costs $1205!!
95,5,0432
12345,0000
1,2345
Я надеюсь, что это полезно!
РЕДАКТИРОВАТЬ:
Существует дополнительное изменение, которое может быть необходимо, но этоне без побочных эффектов:
(\b\d{1,3}),(?=\d{3}(\D|$))
Изменяет квантификатор "один или несколько" (+
) для первого набора цифр на квантификатор "один-три" ({1,3}
) и добавляетутверждение "границы слова" перед ним.Это предотвратит замены типа 1234,123
==> 1234123
.Однако это также предотвратит замену, которая может быть желательной для (если ей предшествует буква или подчеркивание), такой как A123,789
или _1,555
(которая останется неизменной).