0
разрешено второй частью вашего регулярного выражения. Измените его на:
^(\d{1,3},?(\d{3},?){0,2}\d{3}|[1-9]\d{0,2})$
Он гарантирует, что первая цифра не равна нулю, когда общее количество цифр меньше или равно трем.
Регулярное выражение по-прежнему допускает шаблоны типа 000,000,000
и 000,123
. Чтобы исправить это, вы можете изменить первую часть регулярного выражения на:
^([1-9]\d{0,2},?(\d{3},?){0,2}\d{3}|[1-9]\d{0,2})$
Или переписать его как
^[1-9]\d{0,2}(,?\d{3}){0,3}$
Это по-прежнему позволяет 123,456789
и 123456,789
. Давайте изменим это на:
^[1-9]\d{0,2}(?:(,\d{3}){0,3}|(\d{3}){0,3})$
Это позволит 123,456,789
и 123456789
, но не 123,456789
или 123456,789