Подход удаления оскорбительных символов потенциально проблематичен. Что, если где-то .в строке есть другой ? Он не будет удален, хотя должен!
Если удалить не цифры или точки, строка joe.smith ($3,004.50)превратится в неразборчивую .3004.50.
Имхо, лучше сопоставить определенный шаблон и извлечь его с помощью группы. Что-то простое - найти все смежные запятые, цифры и точки с помощью регулярного выражения:
[\d,\.]+
Пример пробного запуска:
Pattern understood as:
[\d,\.]+
Enter string to check if matches pattern
> a2.3 fjdfadfj34 34j3424 2,300 adsfa
Group 0 match: "2.3"
Group 0 match: "34"
Group 0 match: "34"
Group 0 match: "3424"
Group 0 match: "2,300"
Затем для каждого совпадения удалите все запятые и отправьте их синтаксическому анализатору. Чтобы обработать случай чего-то вроде этого 12.323.344, вы можете сделать еще одну проверку, чтобы убедиться, что в соответствующей подстроке есть не более одного ..
joe.smith ($3,004.50)? Простое удаление проблемных классов символов может пойти не так.