Como encontrar endereços de e-mail usando RegEx
Alguma vez você já tentou buscar e-mails usando RegEx? Pode parecer simples, mas é preciso pensar nas variações que cada e-mail pode ter. Hoje, nós veremos como fazer isso de forma bem abrangente.
Como dito acima, a montagem da expressão deve ser pensada de forma que nenhum endereço passe em branco. Por isso, é preciso considerar todos os caracteres aceitos, além dos formatos também.
Apesar disso, a expressão regular que usaremos não é nenhum bicho de sete cabeças. Com a explicação abaixo, você verá que é bem simples, na verdade.
Veja como procurar endereços de e-mail usando expressões regulares.
Vamos ao que interessa!
Buscar por e-mails usando expressões regulares é bem mais simples do que se imagina. Em comparação com a busca por telefones, por exemplo, os e-mails dão muito menos trabalho.
Digo isso pois, diferentemente dos telefones, os e-mails possuem uma estrutura que não varia de acordo com o país, cidade, etc. Assim sendo, não é preciso adaptar o código por conta do formato do e-mail.
Por isso, o comando que usaremos para procurar e-mails usando RegEx será o seguinte:
[\w\-.]+@[\w\-]+\.\w+\.?\w*
Pelo comando acima, será possível buscar e-mails independente do endereço do provedor. Isso significa que o comando buscará por e-mails com registro sem nacionalidade (ex.: .com, .org), tanto quanto e-mails que possuam a nacionalidade do registro (ex.: .com.br).
Vejamos abaixo como funciona essa expressão regular.
Destrinchando a RegEx de e-mail
A expressão regular para busca de e-mails pode ser dividida em três partes. A primeira delas é a responsável por buscar o nome do utilizador do e-mail, ou seja, os caracteres antecedentes ao símbolo @
.
O código responsável por encontrar o nome do utilizador é este: [\w\-.]+
. Nesta parte, temos os códigos \w
, que busca por letras, números e _
, além dos caracteres -
e .
, comuns em endereços de e-mail. Vale lembrar que o caractere -
deve ser precedido por uma \
para ser interpretado como um caractere sem função.
Todo este grupo de códigos vai agrupado dentro de []
, o que significa que a expressão deve buscar por todos eles primeiramente. Por fim, o +
após os []
faz com que a expressão busque por uma sequência de um ou mais caracteres do grupo.
Em seguida, vem a segunda parte da RegEx: @[\w\-]+\.\w+
. É nesta parte que a mágica acontece já que o @
está presente, e sem nenhum comando que altere seu comportamento, o que o torna um item obrigatório no resultado da expressão.
Após o @
, vem o comando [\w\-]+
, que funciona da mesma forma que a primeira parte da expressão, exceto que ele não busca pelo caractere .
. Esta parte é responsável por buscar o nome do provedor.
Depois disso, buscaremos pelo complemento do endereço do provedor através deste comando: \.\w+
. Enquanto o \.
procura pelo .
após o nome do provedor, o \w+
encontra os caracteres posteriores a ele (ex.: .com). Assim como o -
, aqui o .
também possui uma \
antes com o intuito de torná-lo um caractere sem função.
Por último, a parte final da expressão é esta: \.?\w*
. Aqui a ideia é verificar se há mais complementos no nome do provedor, por exemplo, [email protected].
Primeiramente, usamos o \.?
para verificar se existe um .
após o primeiro complemento do endereço. O uso da ?
serve justamente para verificar se um caractere existe ou não.
Em seguida, a busca pelos caracteres do complemento final é feita pelo comando \w*
. Neste caso, utilizamos o *
que, além de verificar a existência de um caractere, busca por uma sequência dele caso ele realmente exista.
Com isso, finalmente temos nossa RegEx para busca de e-mails.
Deu para entender como funciona a expressão acima? Se quiser ler mais tutoriais sobre o assunto, siga nossas redes sociais ou inscreva-se em nossa newsletter mensal no rodapé do site.
Paulistano, 28 anos, Designer, bem geek e criador do Ene Maneiras.