
Validador de Regex de Número de Telefone em Python
Valide números de telefone com precisão usando o Validador de Regex de Número de Telefone em Python. Seja para verificar formatos locais ou padrões internacionais, esta ferramenta garante validação precisa para aplicações Python. Para testes mais extensivos, use o Python Regex Tester ou aprofunde-se com utilitários como o Validador de Regex de Endereço IP em Python e o Validador de Regex de E-mail em Python.
Validador de Regex de Número de Telefone em Python - Documentação
O que é Regex de Número de Telefone em Python?
O regex de número de telefone em Python permite validar se uma string corresponde a formatos esperados de número de telefone, sejam eles locais, internacionais ou formatados para legibilidade.
Em Python, isso é tipicamente feito usando o módulo re com um padrão de expressão regular (regex) que verifica dígitos, códigos de país opcionais, separadores (como -, espaço ou ()) e comprimentos válidos. O módulo re é a biblioteca integrada do Python para trabalhar com expressões regulares, facilitando a busca, correspondência e manipulação de texto usando padrões.
Você pode incluir âncoras opcionalmente em sua expressão regular para garantir que o número de telefone inteiro seja correspondido do início ao fim, impedindo correspondências parciais. Por exemplo:
^(+\d{1,3})?\s?(?\d{1,4})?[\s.-]?\d{3}[\s.-]?\d{4}$
Este padrão acomoda códigos de país opcionais, espaços, parênteses e vários separadores como pontos, espaços ou hifens. Ajuste o padrão conforme necessário para os formatos de número de telefone relevantes para sua aplicação.
Os principais componentes que você pode querer que seu regex trate:
Código de país: Geralmente opcional, costuma começar com + e consiste em um ou mais dígitos (ex.: +1, +44, +91).
Código de área: Pode estar entre parênteses (ex.: (11)) e o número de dígitos pode variar por país ou região.
Número local: A sequência principal de dígitos, frequentemente separada em grupos por espaços, hifens ou pontos (ex.: 555-1234, 555 1234, 555.1234).
Para começar, importe o módulo: python import re
O módulo re fornece várias funções-chave:
re.search(): Varre toda a string e retorna um objeto de correspondência se o padrão for encontrado.
re.match(): Verifica correspondência apenas no início da string.
re.findall(): Retorna uma lista de todas as correspondências não sobrepostas na string.
re.compile(): Compila um padrão regex em um objeto de padrão reutilizável para correspondência repetida eficiente.
Formatos Comuns de Número de Telefone
Números de telefone podem aparecer em uma variedade de formatos dependendo do país, região e preferência do usuário:
Formato internacional: Inclui um código de país (precedido por +), código de área e número local.
Formato local: Normalmente omite o código do país, usando apenas o código de área e o número local.
Separadores Comuns
Espaços
Hifens
Pontos
Sem separadores
Parênteses ao redor do código de área
Funções Essenciais do Módulo re em Python
re.search(): Varre toda a string para a primeira localização onde o padrão corresponde. Retorna um objeto de correspondência ouNone.re.match(): Verifica correspondência apenas no início da string.re.findall(): Coleta todas as ocorrências não sobrepostas do padrão, retornando todas as correspondências em uma lista.re.compile(): Prepara e reutiliza um padrão regex para validações repetidas mais rápidas.
Quando Usar?
Formulários de cadastro para garantir que as entradas de telefone estejam corretas
APIs que processam dados de contato
Sistemas de CRM para limpar e validar entradas de celular
Sistemas de SMS e chamadas para evitar falhas de mensagem por formatos incorretos
Padrões Regex Comuns para Números de Telefone
Apenas dígitos (número de 10 dígitos no estilo dos EUA):
^\d{10}$Corresponde a 9876543210
Com código de país (ex.: +91 para Índia):
^\+\d{1,3}\d{7,14}$Corresponde a +919876543210
Formatado com espaços ou hifens:
^\+?\d{1,3}[-\s]?\(?\d{3}\)?[-\s]?\d{3}[-\s]?\d{4}$Corresponde a +1 800-555-1234 ou (800) 555-1234
Como Validar Números de Telefone Usando Regex em Python
Aqui está um exemplo completo usando o módulo re:
import redef is_valid_phone(phone): # Permite código de país opcional, espaços, hifens, parênteses pattern = re.compile(r'^+?\d{1,3}?[-\s]?(?\d{2,4})?[-\s]?\d{3,4}[-\s]?\d{4}$') return pattern.match(phone) is not None
Casos de teste
print(is_valid_phone("+91 98765 43210")) # True print(is_valid_phone("(022) 123-4567")) # True print(is_valid_phone("9876543210")) # True print(is_valid_phone("12345")) # False
Melhorando a Legibilidade com Grupos Nomeados
Ao trabalhar com regex para números de telefone, grupos nomeados são muito úteis. Em vez de tentar lembrar qual conjunto de parênteses corresponde ao código de país ou código de área, você pode atribuir nomes significativos diretamente no padrão regex:
country_codecaptura o código de país opcional no inícioarea_codeidentifica o código de área (dentro ou fora de parênteses)local_numberdenota a parte principal do número de telefone
Combine com Estas Ferramentas
Validador de Regex de E-mail em Python - Valide e-mail junto com dados de telefone.
Validador de Regex de Endereço IP em Python - Verifique campos de IP durante o cadastro.
Validador de Regex de Senha em Python - Aplique regras de senha forte para segurança da conta.
Validador de Regex de UUID em Python - Valide IDs únicos de usuário ou sessão junto com números de telefone.
Dicas Profissionais
Sempre normalize os números de telefone após a validação para armazenamento (ex.: remova hifens ou espaços).
Se lidar com usuários internacionais, prefira padrões que suportem + opcional e comprimentos variados.
Evite assumir um comprimento fixo; países diferentes têm padrões diferentes (ex.: Reino Unido, Índia, EUA).
Use re.fullmatch() em vez de re.match() se quiser corresponder estritamente à string inteira.
Para interface do usuário, considere combinar validação regex com menus suspensos de código de país para melhorar a precisão.
Tratando Erros Comuns de Entrada do Usuário
Os usuários são criativos com entradas, espere espaços extras, separadores inesperados ou caracteres duplos. Você pode antecipar esses erros comuns pré-processando a entrada antes de aplicar o regex:
def preprocess_phone_number(phone_number):Remove espaços extras
phone_number = " ".join(phone_number.split())
Substitui separadores incorretos comuns
phone_number = phone_number.replace(",", ".").replace(";", ".") return phone_number
def validate_phone_number(phone_number): phone_number = preprocess_phone_number(phone_number) match = pattern.search(phone_number) return bool(match)
Técnicas Avançadas de Validação
Grupos Nomeados para Melhor Legibilidade:
pattern = re.compile(r'(?P<country_code>+\d{1,3})?\s?(?(?P<area_code>\d{1,4}))?[\s.-]?(?P<local_number>\d{3}[\s.-]?\d{4})')Validar Códigos de País ou Área Específicos:
pattern = re.compile(r'(+1)?\s?(?(2\d{2}[3-9]\d{2}))?[\s.-]?\d{3}[\s.-]?\d{4}')Tratando Erros Comuns de Entrada:
def preprocess_phone_number(phone_number): # Remove espaços extras phone_number = " ".join(phone_number.split()) # Substitui separadores incorretos phone_number = phone_number.replace(",", ".").replace(";", ".") return phone_number
def validate_phone_number(phone_number): phone_number = preprocess_phone_number(phone_number) match = pattern.search(phone_number) return bool(match)
Tornando Expressões Regulares Claras com Grupos Nomeados
Para adicionar um grupo nomeado, envolva a parte do seu padrão em (?P<name>...):
import re
pattern = re.compile( r'(?P+\d{1,3})?\s?(?(?P\d{1,4}))?[\s.-]?(?P\d{3}[\s.-]?\d{4})' )
Você pode acessar cada grupo de correspondência pelo nome (match.group('area_code')), tornando o código direto e menos propenso a erros.
Casos de Uso
Validação de entradas do usuário em formulários Django ou Flask
Filtragem de dados de contato em massa em pipelines ETL
Verificação de números de telefone antes do envio de alertas por SMS
Adição de restrições regex em validadores de dados Python
Frequently Asked Questions
Este regex suporta formatos de telefone fixo?
Posso usar este regex para formatos internacionais?
Como extraio apenas números de telefone válidos de um arquivo de texto?
O regex é suficiente para validar números de telefone reais?
Devo armazenar números formatados ou não formatados?
Related Articles



Teste suas APIs hoje!
Escreva em linguagem natural e o Qodex gera testes seguros e prontos para rodar.



