Como o padrão funciona
| Parte | Significado |
|---|---|
(?:\+1[-. ]?)? | Código de país +1 opcional, seguido de um separador opcional |
\(?([2-9]\d{2})\)? | Código de área (grupo 1), opcionalmente entre parênteses; não pode começar com 0 ou 1 |
[-. ]? | Hífen, ponto ou espaço opcional |
(\d{3}) | Prefixo (grupo 2) |
(\d{4}) | Número da linha (grupo 3) |
Exemplos de código
JavaScript
const re = /^(?:\+1[-. ]?)?\(?([2-9]\d{2})\)?[-. ]?(\d{3})[-. ]?(\d{4})$/;
re.test(value); // true or falsePython
import re
bool(re.fullmatch(r'(?:\+1[-. ]?)?\(?([2-9]\d{2})\)?[-. ]?(\d{3})[-. ]?(\d{4})', value))PHP
preg_match('/^(?:\+1[-. ]?)?\(?([2-9]\d{2})\)?[-. ]?(\d{3})[-. ]?(\d{4})$/', $value) === 1;
Notas e limitações
Os três grupos permitem normalizar qualquer formato aceito, por exemplo para ($1) $2-$3. Para números internacionais, armazene-os no formato E.164 e use uma biblioteca como libphonenumber para a validação real.
Testador de Expressões Regulares
Digite um padrão e veja as correspondências serem destacadas em tempo real no seu texto de teste.