NewIntroducing QODEX QA Services — platform-powered QA for API-driven teams.Learn more →
Validador de Regex de Número de Telefone em Javascript

Validador de Regex de Número de Telefone em Javascript

O Validador de Regex de Número de Telefone em JavaScript permite verificar instantaneamente se uma string de número segue um formato válido de telefone usando regex em JavaScript. É ideal para formulários de contato, fluxos de cadastro ou qualquer aplicação web que colete entradas de telefone. Use junto com nosso JavaScript Regex Tester para criar e refinar seus próprios padrões, ou combine com o Validador de Regex de E-mail em JavaScript para validação completa de formulários de contato. Você também pode codificar números validados usando o Codificador Base64 ou gerar tokens seguros para sistemas de login baseados em telefone com o Gerador de Token.

Validador de Regex de Número de Telefone em Javascript - Documentação

O que é Regex de Número de Telefone?

O regex de número de telefone é um padrão de expressão regular que verifica se uma string corresponde a um formato válido de número de telefone. O padrão pode variar com base em:

  • Formato do país

  • Celular vs. telefone fixo

  • Uso de símbolos como +, -, (, ) ou espaços

Padrão de Regex para Número de Telefone em JavaScript

Regex Básico para Número de Telefone Internacional:

/^\+?[0-9]{1,4}?[-.\s]?(\(?\d{1,5}?\)?)[-.\s]?\d{1,5}[-.\s]?\d{1,9}$/

Análise do Padrão:

  • ^\+?: + opcional para código de país

  • [0-9]{1,4}?: Dígitos do código de país

  • [-.\s]?: Separador opcional

  • (\(?\d{1,5}?\)?): Código de área opcional com ou sem parênteses

  • \d{1,5}: Prefixo ou seção do número

  • \d{1,9}: Parte final do número

  • $: Fim da string

Ao criar formulários para coletar números de telefone, para contato, notificações SMS ou perfis de usuário, os usuários podem inserir números de maneiras muito variadas. Por exemplo, todos os seguintes são números válidos dos EUA:

  • +1-202-555-0123

  • +44 20 7946 0958

  • (123) 456-7890

Se você quiser impor separadores consistentes em todo o número, normalmente usaria um grupo de captura para o separador e depois o referenciaria mais tarde no padrão usando uma referência retroativa. Isso garante que, se um separador for usado, ele seja o mesmo em toda a string. Se preferir permitir flexibilidade, omita a referência retroativa.

Exemplo de Código 1 - Validação Básica de Número de Telefone

const phone = "+91-9876543210";
const pattern = /^\+?[0-9]{1,4}?[-.\s]?(\(?\d{1,5}?\)?)[-.\s]?\d{1,5}[-.\s]?\d{1,9}$/;

console.log(pattern.test(phone)); // true

Exemplo de Código 2 - Validar Múltiplos Números

const numbers = ["+1 800-123-4567", "1234567890", "(011) 2345 6789"];

const pattern = /^+?[0-9]{1,4}?[-.\s]?((?\d{1,5}?)?)[-.\s]?\d{1,5}[-.\s]?\d{1,9}$/;

numbers.forEach(num => { console.log(${num} → ${pattern.test(num)}); });

Cobre uma Ampla Variedade de Formatos

O padrão regex acima é versátil o suficiente para corresponder a uma variedade de estilos de número de telefone ao redor do mundo, incluindo:

  • Números internacionais com ou sem o sinal de mais

  • Formatos dos EUA e locais

  • Números com códigos de área entre parênteses, com ou sem espaços

  • Números com códigos de país variáveis e separadores

Exemplo de Código 3 - Validar Entrada em um Formulário Web

<input type="text" id="phoneInput" placeholder="Enter your phone number" />
<p id="status"></p>

<script> const pattern = /^+?[0-9]{1,4}?[-.\s]?((?\d{1,5}?)?)[-.\s]?\d{1,5}[-.\s]?\d{1,9}$/;

document.getElementById("phoneInput").addEventListener("input", function () { const isValid = pattern.test(this.value.trim()); document.getElementById("status").textContent = isValid ? "Valid Number" : "Invalid Number"; }); </script>

Por que Alguns Números de Telefone Falham na Validação

Se você está se perguntando por que algo como (000) 999-5555 pode não passar em certos padrões regex, é porque alguns regex exigem que os separadores entre grupos de números sejam consistentes em todo o número de telefone. Para permitir separadores mistos, ajuste o padrão para que cada posição de separador seja correspondida de forma independente.

Como Referências Retroativas (\1) Mantêm os Separadores Consistentes

Padrões regex frequentemente usam referências retroativas (como \1) para garantir consistência dentro da string correspondida. Para números de telefone:

  • ([-\s.])? captura um separador opcional (hifen, espaço ou ponto) após o código de área.

  • Usar \1 diz ao regex que o separador encontrado anteriormente deve se repetir. Assim, "123-456-7890" corresponde, mas "123-456.7890" não.

Para permitir separadores mistos, substitua a referência retroativa específica pelo padrão mais amplo de qualquer separador.

Validando Apenas o Conteúdo Numérico

Para garantir que um número de telefone contenha exatamente 10 dígitos, independentemente da formatação:

var originalPhoneNumber = "415-555-1212";
function isValid(p) { var phoneRe = /^[2-9]\d{2}[2-9]\d{2}\d{4}$/; var digits = p.replace(/\D/g, ""); return phoneRe.test(digits); }

Requisitos de Comprimento de Dígitos por País

Ao validar números de telefone, é importante considerar os requisitos específicos de dígitos por país:

  • Argentina: 8 a 13 dígitos no total.

  • Estados Unidos: Pelo menos 10 dígitos (sem contar o código do país).

  • União Europeia: Muitos países usam 9 dígitos para números locais.

  • Índia: Exatamente 10 dígitos, geralmente com o código de país +91.

  • China: Normalmente 10 ou 11 dígitos. O código de país (+86) precede esses em formatos internacionais.

Validando Números de Telefone com Código de País

Para garantir que um número inclua um código de país válido, combine regex com um array de códigos ISD:

  • Extraia os dígitos da entrada.

  • Verifique se o número tem um comprimento razoável (8 a 16 dígitos).

  • Isole os dígitos iniciais como um possível código ISD.

  • Compare com uma lista predefinida de códigos ISD válidos.

Tratando Códigos de País e Separadores Opcionais

Para tratar números que podem ou não começar com o código de país dos EUA:

^(1[ -]?)?

Combinando com o restante de um padrão padrão de número dos EUA:

/^(1[ -]?)?\d{3}[ -]?\d{3}[ -]?\d{4}$

Isso corresponde a: 1-800-123-4567, 1 800 123 4567, 800-123-4567.

Formatos Comuns de Números dos EUA Aceitos

Este regex é flexível o suficiente para corresponder a uma ampla variedade de formatos de números dos EUA:

  • 202-515-5555

  • 202 515 5555

  • (202)515 5555

  • 1 202 515 5555

  • 2025155555

  • 1-202-515-5555

Garantindo que o Regex Siga as Regras NANP

Para validação estrita do North American Numbering Plan (NANP):

  • Formato do Código de Área e Troca: Ambos devem começar com um dígito de 2 a 9.

  • Restrição N11: Códigos de área e trocas padrão não podem terminar em "11".

  • Estrutura: O formato aprendido é NXX-NXX-XXXX, onde N = [2-9] e X = [0-9].

Validação Estrita vs. Flexível em JavaScript

Validação flexível aceita uma ampla variedade de formatos de número de telefone. Os usuários podem inserir seus números com diferentes separadores, parênteses ou com/sem código de país. A vantagem principal é que os usuários não são bloqueados por requisitos de formatação. A desvantagem é que padrões flexíveis não capturam erros tipográficos ou números malformados.

Validação estrita aplica um formato esperado preciso. Se você precisa garantir dados limpos e previsíveis, por exemplo, antes de armazenar em banco de dados ou integrar com serviços como Twilio, a validação estrita é a opção mais segura.

Dicas para Validação Flexível e Confiável

var originalPhoneNumber = "415-555-1212";
function isValid(p) { var phoneRe = /^[2-9]\d{2}[2-9]\d{2}\d{4}$/; var digits = p.replace(/\D/g, ""); return phoneRe.test(digits); }

Dicas Profissionais

  • Sempre use .trim() na entrada para remover espaços acidentais do usuário.

  • Para números de celular indianos, simplifique o regex para: /^[6-9]\d{9}$/

  • Precisa exatamente de 10 dígitos? Use: return value.match(/\d/g).length === 10;

  • Use padrões mais específicos por país ao validar números locais.

  • Para aplicativos globais, considere integrar com bibliotecas como libphonenumber para validação mais profunda.

Casos de Uso

  • Formulários de Cadastro: Valide instantaneamente números de telefone inseridos por usuários.

  • Sistemas de CRM: Filtre e limpe números de telefone antes de adicionar ao banco de dados.

  • Automação de Marketing: Garanta números precisos antes de enviar campanhas de SMS.

  • Aplicativos de Reserva: Evite entradas inválidas em formulários e fluxos de retorno de chamada.

Combine com Estas Ferramentas

Frequently Asked Questions

Este regex pode validar todos os formatos globais?

Cobre muitos formatos, mas países específicos podem exigir padrões personalizados.

Ele verifica se o número está ativo?

Não. O regex verifica apenas o formato. Para verificação em tempo real, integre serviços de OTP por SMS.

Por que parênteses são permitidos?

Porque muitos usuários formatam códigos de área como (123), o que é válido no regex.

O sinal de mais (+) é obrigatório?

É opcional. O padrão funciona com ou sem ele, dependendo do número.

Qual é a melhor forma de limpar a entrada do usuário antes do regex?

Use .trim() e opcionalmente .replace(/\s/g, "") para remover espaços extras.

Como criar um regex que permita apenas certos caracteres (dígitos, +, (), -, . e espaços) em números de telefone?

Use /[^0-9+() -.]/g para corresponder a qualquer caractere que não seja um dígito, sinal de mais, parêntese, espaço, ponto ou hifen, ajudando a identificar e remover símbolos indesejados da entrada do usuário.

Por que é importante personalizar a contagem mínima e máxima de dígitos para validação de número de telefone com base no país?

Os formatos de números de telefone diferem amplamente entre regiões. Nos EUA, normalmente são necessários pelo menos 10 dígitos, enquanto muitos formatos europeus usam 9 dígitos. Na Índia e na China, os números podem ter 10 ou 11 dígitos após o código de país.

Teste suas APIs hoje!

Escreva em linguagem natural e o Qodex gera testes seguros e prontos para rodar.