Encontrar telefone com RegEx

Como encontrar números de telefone usando RegEx

Por em 14/12/2021

Ene Tutoriais

Quem trabalha com expressões regulares, sabe o quão versátil elas são na hora de buscar conteúdo. Hoje, nós veremos um pouco mais dessa versatilidade pois eu mostrarei como encontrar números de telefone via RegEx.

Mesmo sendo algo comum, montar uma expressão que encontre números de telefone pode ser um pouco complicado. Principalmente se considerarmos a falta de padrão que pode existir.

Eu, por exemplo, já vi pessoas separando com hífen, ponto, espaço, e até mesmo tudo junto, sem um separador. No caso do DDD não é muito diferente, há pessoas que usam parênteses e outras que inserem apenas um espaço.

Enfim, a variação é grande, por isso, é importante usar uma expressão regular que abranja todas essas possibilidades. Isso é o que veremos logo abaixo.

Vamos ao que interessa!

Eu mostrarei abaixo uma expressão regular pronta no qual você pode buscar números de telefone. Além disso, eu explicarei a função de cada uma de suas regras. A expressão a ser usada será a seguinte:

\+\d+[ ]?\(?\d+\)?[ ]?\d+[-. ]?\d+

Na expressão acima há dez regras, sendo que algumas delas são iguais. No geral, essas regras buscam por caracteres específicos, ou então, por um grupo de caracteres do mesmo tipo.

Essa expressão regular é capaz de encontrar números de telefone no seguinte formato: código do país + DDD + número do telefone. Entretanto, é possível adaptá-la para formatos de telefone mais simples.

Para começar, vejamos como funciona a expressão por completo. Como exemplo, usaremos o seguinte número de telefone: +55 (55) 5555-5555. Este formato é o mais comum de se utilizar, no qual conta com um sinal de mais junto ao código do país, além de parênteses no DDD e um hífen na metade do número do telefone.

Busca por telefone via RegEx através do Notepad++

RegEx para telefone no Notepad++

Primeiramente, devemos encontrar o código do país, nesse caso, +55. A parte da expressão que busca por ele é a seguinte: \+\d+, sendo que o \+ é responsável por buscar o sinal de mais, enquanto que \d+ buscará os dígitos na sequência.

É interessante notar que, apesar do + aparecer duas vezes, eles possuem funções diferentes. No primeiro caso, a \ antecedendo o + anula sua funcionalidade, fazendo com que ele se comporte como um caractere comum. Por outro lado, em \d+ o sinal é o que faz com que a expressão busque por mais de um dígito em sequência.

Em seguida, é hora de buscar o DDD que se encontra neste formato: (55). A expressão usada para isso será a seguinte: [ ]?\(?\d+\)?[ ]?. Apesar do tamanho, aqui os códigos são extremamente parecidos.

Normalmente, antes e depois do DDD, é comum inserirmos um espaço. Mas, já que isso pode variar, verificaremos se o espaço existe através do comando [ ]?. A ? verifica se o caractere existe ou não, que no caso, é o que está dentro dos colchetes.

Leia também »  Videoaula Dotgrid #3 - Uso de camadas e canvas

Logo após, vêm os parênteses, no qual usaremos os comandos \(? e \)?. Assim como o +, os parênteses possuem uma função dentro das RegEx, por isso utilizamos a \ antes deles. A ? também está presente, pois o uso de parênteses não é uma unanimidade.

Por fim, usaremos novamente o comando \d+ para buscar os números do DDD. Feito isso, é hora de irmos à parte final: o número do telefone.

Para encontrarmos o número do telefone, lembrando que o formato mais comum é 5555-5555, usaremos esses comandos: \d+[-. ]?\d+. É possível notar que, mais uma vez, o comando \d+ está presente. Dessa vez, a função é encontrar as sequências de números separadas, justamente por isso que ele está duplicado.

Enquanto isso, para buscarmos o separador usamos este comando: [-. ]?. Como a ? verifica se o conteúdo dos colchetes existe, o que estamos verificando aqui é se existem hifens, pontos ou espaços entre as sequências de números, pois o separador pode variar.

Resultado de expressão regular para telefone pelo VS Code

RegEx para telefone no VS Code

Pronto, juntando todos esses comandos na sequência correta, você será capaz de encontrar números de telefone usando expressões regulares.

Adaptando a RegEx para outros formatos de telefone

No exemplo mostrado acima, a RegEx encontra números de telefone que comecem pelo código do país no padrão +55. Se o número não começar dessa forma, o código não funciona.

Assim sendo, eu mostrarei algumas formas de adaptar essa expressão para outros formatos de telefone. Confira abaixo alguns modelos:

  • Para encontrar telefones que comecem pelo DDD, ou seja, (55) 5555-5555, utilize esta expressão: \(\d+\)[ ]?\d+[-. ]?\d+. Dessa forma, a existência dos parênteses é obrigatória já que a ? foi removida do comando;
  • Você também pode buscar por telefones sem código do país e DDD (ex.: 5555-5555) usando a expressão \d+[-. ]\d+. Neste caso, o que é obrigatório existir é o separador dos números;
  • Por fim, você também pode buscar por telefones que tenham apenas números, por exemplo, 1155558888. Através da expressão \d{10,11}, é possível buscar por números de telefone que tenham no mínimo 10 e no máximo 11 números.
Uso da regex para telefone simples no Brackets

RegEx simples para telefone no Brackets

Além das opções acima, você também pode customizar ainda mais a expressão se necessário. O importante é seguir o padrão para que você possa encontrar todos os números de telefone via RegEx.


E aí, deu certo uma dessas expressões? Aqui no site, eu estou começando uma série de tutoriais relacionados ao assunto, por isso, siga nossas redes sociais ou inscreva-se em nossa newsletter mensal no rodapé da página.

PUBLICIDADE