Você está na página 1de 5

31/7/2014 Validando números de telefone com expressões regulares | goncin@wordpress.

com:~$ _

Validando números de telefone com expressões regulares


A privatização do setor de telecomunicações, em meados da década de 90, universalizou o acesso dos brasileiros aos serviços de telefonia. De quebra, organizou a estrutura
numérica dos terminais telefônicos: antes tínhamos códigos de área (códigos DDD) de três e quatro dígitos, e os números de telefone variavam entre de 5 a 7 dígitos.
Atualmente, no país, todos os códigos de área têm dois dígitos e os números de telefone, oito. Essa estrutura uniforme torna possível validar números de telefone utilizando
expressões regulares. Vejamos como.

Validando códigos de área (DDD)

Os código de área possíveis no Brasil vão de 10 a 99. Portanto, a expressão regular para validar códigos de área é

[1-9][0-9] (10)|([1-9][1-9])

UPDATE: O Alexandre Taz, em seu comentário, alertou que o único DDD válido terminado em 0 é o 10, que será implementado em breve na Grande São
Paulo, e observou também que prefixos iniciados com o número 6 também foram reservados para celulares. As expressões regulares foram alteradas para
refletir essas alterações. Obrigado, Alexandre!

Trocando em miúdos: na primeira posição, aceitamos dígitos de 1 a 9 e, na segunda, dígitos de 0 a 9. Simples assim.

Se quisermos validar o código de área entre parênteses, como usualmente o código de área é representado, basta acrescentar:

\((10)|([1-9][1-9])\)

Uma vez que os sinais de abre e fecha parênteses porque esses sinais têm significado especial nas expressões regulares, é necessário antecedê-los com uma contrabarra para
que sejam considerados literalmente.

Validando números de telefone (incluindo celulares)

Como dito anteriormente, os números de telefone (os de celular, inclusive) têm oito dígitos. O primeiro dígito do prefixo (os quatro primeiros números) pode variar de 2 a 9;
números iniciados com 1 são reservados para telefônes de emergência, geralmente com 3 dígitos apenas (190 – polícia; 193 – bombeiros, etc.), e não serão validados. Os
outro sete dígitos variam entre 0 e 9. Além disso, entre o quarto e o quinto dígito, vemos normalmente um hífen. De posse dessas informações, montamos seguinte
expressão regular:

[2-9][0-9]{3}-[0-9]{4}

Explicando: o primeiro dígito (representado pelo primeiro grupo) pode variar de 2 a 9. A seguir, temos um grupo que pode variar entre 0 e 9 e se repete {3} vezes, seguido
pelo hífen. O grupo final também pode variar entre 0 e 9 e se repete {4} vezes.

Validando números de celular

Pelas atuais normas da Anatel, os dígito inicial dos prefixos reservados para números de celular varia entre 7 6 e 9. Logo:

[6-9][0-9]{3}-[0-9]{4}

Foi necessário modificar apenas o primeiro grupo, relativamente à máscara anterior.

Colocando tudo junto

http://goncin.wordpress.com/2010/08/30/validando-numeros-de-telefone-com-expressoes-regulares/ 1/5
31/7/2014 Validando números de telefone com expressões regulares | goncin@wordpress.com:~$ _
Para os casos em que o código de área será armazenado no mesmo campo que o número do telefone, a expressão regular é:

\((10)|([1-9][1-9])\) [2-9][0-9]{3}-[0-9]{4}

Trata-se simplesmente das máscaras já vistas, colocadas uma após a outra, e com um espaço entre elas para garantir a legibilidade.

Conclusão

Expressões regulares são ótimas para validar dados que obedecem a um padrão. Pesquise, busque, aprenda e melhore suas aplicações com elas. Praticamente todas as
linguagens de programação oferecem suporte a elas. Consulte a documentação da sua linguagem para aprender como elas podem ser aplicadas .

About these ads

You May Like

1.

Espalhe por aí:

 Twitter 23  Facebook 4  Mais

 Gosto
Be the first to like this.

Relacionado

Aprendendo a pensar com expressões O novo Registro de Identidade Civil (RIC), e as Entendendo as "relations" (relações) do Yii
regulares implicações para quem é desenvolvedor Framework
Em "programação" Em "php" Em "php"

programação expressões regulares, programação

← JetBrains PhpStorm: o novo garoto no quarteirão dos IDEs para PHP O novo Registro de Identidade Civil (RIC), e as implicações para quem é desenvolvedor →

Seguir

Seguir
27 Respostas para “Validando números de telefone com expressões regulares”
“goncin@wordpress.com:~$
Pingback: Tweets that mention Validando números_”
de telefone com expressões regulares « goncin@wordpress.com:~$ _ -- Topsy.com

Obtenha todo post novo


William G. Comnisky 30/08/2010 às 20\0842 entregue na sua caixa de
Saudações! e pra validar nextel, como faz? ;D abraço
entrada.

Resposta Insira seu endereço de e-mail

goncin 30/08/2010 às 20\0848 Cadastre-me


Olá, William? Como é estrutura de um número de Nextel (desculpe-me a ignorância…)?

Tecnologia WordPress.com
Resposta

Alexandre 03/09/2010 às 11\1114


Duas observações a o unico ddd que tem o segundo digito zero é o 10 que vai começar a ser usado ano que vem, segundo a ANATEL, e celulares começam
a partir de 6

http://goncin.wordpress.com/2010/08/30/validando-numeros-de-telefone-com-expressoes-regulares/ 2/5
31/7/2014 Validando números de telefone com expressões regulares | goncin@wordpress.com:~$ _
Resposta

goncin 03/09/2010 às 11\1130


Obrigado, Alexandre! Não sabia que o prefixo 6 também havia sido reservado para celulares. E a regra do DDD foi aperfeiçoada a partir de sua observação,
com um update no post. Obrigado pela visita e pelo comentário.

Resposta

Pingback: Aprendendo a pensar com expressões regulares « goncin@wordpress.com:~$ _

Márcio 27/04/2011 às 20\0807


Em primeiro lugar, parabéns pelo tópico, goncin!

Vocês sabem me dizer quais são os prefixos válidos para telefones fixos?

Como os de celulares são de 6 a 9, os de fixos seriam de 1 a 5? Alguém saberia me informar?

Valeu!

Resposta

goncin 27/04/2011 às 22\1021


Márcio,

Na ocasião em que eu escrevi este post (agosto/2010), eu tinha notícia de que os prefixos de 2 a 6 eram reservados à telefonia fixa, e de 7 a 9, aos celulares. Logo
a seguir, o Alexandre Taz, num comentário aí em cima, alertou que os prefixos iniciados em 6 já haviam migrado daquela para estes.

A grande questão é que o ritmo de crescimento das linhas celulares é bem mais forte do que das linhas fixas. Nesse passo, em São Paulo já começaram a utilizar os
prefixos 5XXX para celulares, como você pode conferir nesta matéria. E, como se isso não bastasse, há ainda a criação do DDD 10 na região metropolitana da capital
paulista.

O jeito é acompanhar os novos capítulos dessa “novela”, que, pelo visto, está ainda longe de seu final.

Resposta

Murilo 29/06/2011 às 21\0933


Belo post, bem explicado.

Gostaria de que meu campo de telefone digite as aspas, espaço e o hifen porque se eu deixar o campo validado como voce explicou, vai ficar dificil de receber contatos
pelo site.

Sabe como eu faço isso?

Obrigado.

Resposta

Murilo 29/06/2011 às 21\0934


perdao, corrija pra mim, eu quis dizer parenteses e não aspas. valeu

Resposta

goncin 01/07/2011 às 10\1048


O que você procura está aqui: Masked Input jQuery plugin. Divirta-se!

Resposta

Flávio 23/11/2011 às 16\0426


O Espaço após o parênteses é Opcional, pois muitas pessoas digitam sem o espaço.

Ficaria \((10)|([1-9][1-9])\) ?[2-9][0-9]{3}-[0-9]{4}

Resposta

Raquel 20/01/2012 às 17\0501


Nao existe DDD 10. O orgao regulador do setor de telecomunicacoes eh a Anatel, entao essa informacao so pode estar la:

http://www.anatel.gov.br/Portal/verificaDocumentos/documento.asp?
numeroPublicacao=26639&assuntoPublicacao=Plano%20Geral%20de%20C%F3digos%20Nacionais%20?
%20PGCN&caminhoRel=null&filtro=1&documentoPath=biblioteca/resolucao/2001/anexo_res_263_2001.pdf

http://goncin.wordpress.com/2010/08/30/validando-numeros-de-telefone-com-expressoes-regulares/ 3/5
31/7/2014 Validando números de telefone com expressões regulares | goncin@wordpress.com:~$ _

Resposta

goncin 21/01/2012 às 18\0643


Raquel,

Quando o artigo foi escrito, o código DDD 10 estava (estaria ainda?) cogitado para a Região Metropolitana de São Paulo.

Resposta

Jonathan Souza 28/01/2012 às 00\1225


Pessoal, aqui está a resposta para essa questão: http://convergenciadigital.uol.com.br/cgi/cgilua.exe/sys/start.htm?infoid=24558&sid=8.

A Anatel desistiu de implantar o DDD 10 e decidiu que a partir de Julho deste ano, os números em São Paulo ganharão o dígito 9 na frente do número.

Informações direto do site da Anatel:


– Aqui: http://www.anatel.gov.br/Portal/exibirPortalNoticias.do?acao=carregaNoticia&codigo=24580
– E aqui: http://www.anatel.gov.br/Portal/documentos/sala_imprensa/27-1-2012–15h53min22s-Implementa%C3%A7%C3%A3o_nono_d%C3%ADgito.pdf

Jonathan Souza 28/01/2012 às 00\1227


Ah! Esqueci de agradecer ao Goncin pelo artigo. Foi extremamente útil.

Jonathan Souza 28/01/2012 às 01\0124


Desculpa pelo terceiro comentário, mas só agora quando fui testar a expressão, eu notei isso. Essa expressão aceita os seguintes números como
válidos: 2222222222, 3333333333, [...] até 9999999999. No entanto, esses números não são aceitos pela operadora na hora de chamar.
Eu não sou muito bom com expressões regulares, então eu improvisei no PHP com dois testes. Assim:
function matchFone($data) {
$d = preg_replace(‘/[^0-9]/’, ”, $data);
$rep1 = ‘/^[0]{10}|[1]{10}|[2]{10}|[3]{10}|[4]{10}|[5]{10}|[6]{10}|[7]{10}|[8]{10}|[9]{10}$/';
$match = “/^[1-9]{2}[2-9][0-9]{7}/”;
return (preg_match($match, $d) && !preg_match($rep1, $d));
}

Se alguém conseguir resumir isso, eu ficaria muito feliz. Valeu.

Diego Ferreira 15/08/2012 às 01\0109


Valida com ou sem parênteses, traços e espaços.
^\(?\d{2}\)?[\s-]?\d{4}-?\d{4}$

Resposta

Stephanie L. Brito 25/10/2013 às 18\0619


Man, quero te agradecer
a sua expressão foi a unica de muitas que encontrei, valeuu ;)))

Resposta

Murilo 15/08/2012 às 15\0326


Agora teremos o 9 no DDD (11), até mudar em todo o pais vai ficar uma salada boa. Sinceramente não sei o que fazer no meu site, visto que muita gente
não quer se identificar ao entrar em contato no site.

Resposta

Jovi Marcos 23/05/2013 às 13\0158


Vale a pena atualizar o artigo e incluir a tratativa do nono dígito…

Resposta

goncin 24/05/2013 às 11\1150


Por falta de tempo, não fiz isso ainda.

Resposta

http://goncin.wordpress.com/2010/08/30/validando-numeros-de-telefone-com-expressoes-regulares/ 4/5
31/7/2014 Validando números de telefone com expressões regulares | goncin@wordpress.com:~$ _
José Ivan Marciano Junior 07/06/2013 às 12\1238
Pra adequar a validação a nova nomenclatura para os números de São Paulo, não poderíamos modificar a expressão da seguinte forma?

[\(([1-9][1-9])\) [2-9][0-9]{3}|\(11\) 9[2-9][0-9]{3}]-[0-9]{4}

Resposta

Guilherme Machado 03/07/2013 às 11\1112


Como ficaria essa expressão em javascript?
\((10)|([1-9][1-9])\) [2-9][0-9]{3}-[0-9]{4}

Alguma recomendação de editor de expressões regulares em javascript online?

Resposta

Giordano Lima 22/08/2013 às 11\1127


http://regexpal.com

Resposta

Rafael Topô 10/08/2013 às 11\1113


Esta é a expressão que utilizei na rotina aqui da empresa

Para validar os telefones : \(\(?10\)?|\(?[1-9][1-9]\)?\)?[6-9]?[2-9][0-9]{3}-?[0-9]{4}

Como não prever os números repetitivos, como telefones somente com o número 1, ou 2, etc., é necessário indicar um padrão inválido e após ser aprovado no primeiro
teste efetuar o segundo, porém se for aprovado no segundo, isso significa que é inválido, por ter todos os números do telefone composto pelo mesmo numeral, eu uso
esta expressão:

(\(?[0]?[0]?\)?)?[0]?[0]{4}-?[1]{4} | (\(?[1]?[1]?\)?)?[1]?[1]{4}-?[1]{4} |… e assim até o dígito 9.

Resposta

Marcio Luis Siqueira 20/03/2014 às 11\1156


Os números de Celular passaram a ter um digito a mais em SP!

Resposta

Blog no WordPress.com. O tema zBench. ↑ Popular

http://goncin.wordpress.com/2010/08/30/validando-numeros-de-telefone-com-expressoes-regulares/ 5/5

Você também pode gostar