REGEX: ^\d{1,3}(?:(?:\.\d{3})*|(?:\d{3})*)(?:,\d{1,4})?$
Explicação:
\d{1,3}: os números mais a esquerda podem ser de 0 a 999(?:(?:\.\d{3})*|(?:\d{3})*): garante que o separador de milhar seja sempre usado ou nunca. Quebrando em duas partes:(?:\.\d{3})*: ou tem um ponto seguido de 3 números repetidos de 0 a N vezes