Como os intervalos usados aqui são de tamanho fixo, você pode simplesmente escrever o intervalo inteiro [0-9]{3}
= > %código%. E em vez de [0-9][0-9][0-9]
, (| |-|.)
- embora esteja confuso: você está permitindo qualquer caractere ( ( |-|.)?
), além de espaço e .
? Então, pode ser apenas -
, já que space e .?
são correspondidos por -
. Se você está combinando o período literal .
, então você deve usar .
(o primeiro [- .]?
é para evitar a interpretação como um intervalo de caracteres). Então:
^\(?0[1-9]{2}\)?(| |-|.)[1-9][0-9]{3}( |-|.)[0-9]{4}$
Torna-se:
^\(?0[1-9][1-9]\)?[- .]?[1-9][0-9][0-9][0-9][- .][0-9][0-9][0-9][0-9]$