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