Может быть,
^[0-9]{1,3}(?:\s[0-9]{1,3})?(?:\s[0-9]{1,3})?(?:,[0-9]{1,2})?$
может быть близко к тому, что вы имеете в виду.
Здесь мы предположили, что число, за которым следует пробел или , будет недействительным, например:
111 111 пробел
111 111 111 ,
и немного более простая для чтения версия будет:
^[0-9]{1,3}(?:\s[0-9]{1,3}){0,2}(?:,[0-9]{1,2})?$
Если вы хотитеУпростите / измените / изучите выражение, это было объяснено на верхней правой панели regex101.com . При желании вы также можете посмотреть в эту ссылку , как она будет сопоставляться с некоторыми примерами входных данных.
Схема RegEx
jex.im визуализирует регулярные выражения:
![enter image description here](https://i.stack.imgur.com/poHu3.png)