None of the solutions presented here does any considering of
commas or points.
The input comes from carbon based units and they are known to need all
kind of helps to get a number correct.
So my solution would be to check for
-1) just one decimal point and
-2) commas at every forth position counting from the decimal point to the left.
it could be without decimal point and/or without the commas- but
if there they have to be in the correct position.
so 12345.98 or 12,345.98 or 1,234,598 or 1234 would be valid but
1,23,45.98 or 12.345.98 or 12345.5,98 would not be valid
since commas and points are exchanged in meaning in come countries i
would create code that could easy be adjusted for that.