Возможно стоит попробовать следующий вариант:
- Помимо вашего регулярного выражения попытаться очистить все значения функцией filter_var() с маской FILTER_SANITIZE_NUMBER_FLOAT . Список всех масок здесь.
- Преобразовать все числа при помощи функции number_format(), указав разделитель тысяч и десятичных дробей.