Edited by:
^(0|[1-9][0-9]{0,2}(\.[0-9]{3})*)(,[0-9]{2})?$
matches:
^ start of line
[1-9] only one nonzero digit
[0-9]{0,2} between 0 and 2 digits
(\.[0-9]{3})* zero or a longer period and 3 digits
(0 | [1-9][0-9]{0,2}(\.[0-9]{3})*) either (i) zero or (ii) up to three digits (the first is not zero ) followed by blocks with zero or more lots of the period, followed by three digits
(,[0-9]{2})? zero or one batch of comma and 2 digits
$ end of line
source share