Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Contribuição para o Desafio#2 da Aula 4

^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,70})\.([A-Za-z]{2,5}(?:\.[A-Za-z]{2,5})?)$
4 respostas

Obrigado, Roberto!

Parabéns! Ficou muito bom! :D

Queria ter mandado a explicação de cada parte mas ficou com formatação confusa daí não enviei. Então vou mandar novamente.

solução!
^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,70})\.([A-Za-z]{2,5}(?:\.[A-Za-z]{2,5})?)$

Explicação da expressão:

1)  -  ^( [\w-]+(?:\.[\w-]+)*)

a) ^(      : Cria um grupo informando que tudo ocorrerá no início, antes do "@", indicado pela âncora "^".

b) [\w-]+  
[          : Cria uma classe
\w-      : Formada por qualquer letra, maiúscula ou minúscula, ou qualquer número, indicado pelo atalho "\w", e o hífen
]+       :  Fecha a classe informando que ocorre uma ou mais vezes, indicado pelo quantifier "+"

c) (?:\.[\w-]+)*

(?:       : Cria outro grupo porém devido ao uso do non-capturing groups "?:" não será mostrado como grupo
\.         :  Um ponto
[          : Cria uma classe
\w-      : Formada por qualquer letra, maiúscula ou minúscula, ou qualquer número, indicado pelo atalho "\w", e o hífen
]+       :  Fecha a classe informando que ocorre uma ou mais vezes, indicado pelo quantifier "+"
)*        :  Fecha o grupo formando por "b"  e "c" informando que tudo nele poderá ocorrer nenhuma ou mais vezes, indicado pelo quantifier "*".

d) )     : Fecha o grupo

2)  - @
O caractere @

3) ((?:[\w-]+\.)*\w[\w-]{0,70})\.([A-Za-z]{2,5}(?:\.[A-Za-z]{2,5})?)$

a) (      : Cria um grupo

b) (?:[\w-]+\.)*  
(?:       : Cria outro grupo porém devido ao uso do non-capturing groups "?:" não será mostrado como grupo
[          : Cria uma classe
\w-      : Formada por qualquer letra, maiúscula ou minúscula, ou qualquer número, indicado pelo atalho "\w", e o hífen
]+       :  Fecha a classe informando que ocorre uma ou mais vezes, indicado pelo quantifier "+"
\.        :  Um ponto
)*       :  Fecha o grupo informando que tudo nele poderá ocorrer nenhuma ou mais vezes, indicado pelo quantifier "*".

c) \w[\w-]{0,70}
\w        : Qualquer letra, maiúscula ou minúscula, ou qualquer número
[           : Cria uma classe
\w-       : Formada por qualquer letra, maiúscula ou minúscula, ou qualquer número, indicado pelo atalho "\w", e o hífen
]{0,70} : Fecha a classe informando que ocorre no mínimo 0 e no máximo setenta vezes, indicado pelo quantifier "{0,70}"

d)  )*    : Fecha o grupo formando por "b"  e "c" informando que tudo nele poderá ocorrer nenhuma ou mais vezes, indicado pelo quantifier "*".

e) \.     : Um ponto

([A-Za-z]{2,5}(?:\.[A-Za-z]{2,5})?)$

f) (      : Cria um grupo

g) [A-Za-z]{2,5}
[          : Cria uma classe
A-Za-z: Formada por qualquer letra, maiúscula ou minúscula
]{2,5}   : Fecha a classe informando que ocorre no mínimo 2 e no máximo 5 vezes, indicado pelo quantifier "{2,5}"

h) (?:\.[A-Za-z]{2,5})?
(?:       : Cria outro grupo porém devido ao uso do non-capturing groups "?:" não será mostrado como grupo
\.        :  Um ponto
[          : Cria uma classe
A-Za-z: Formada por qualquer letra, maiúscula ou minúscula
]{2,5}   : Fecha a classe informando que ocorre no mínimo 2 e no máximo 5 vezes, indicado pelo quantifier "{2,5}"
)?        :  Fecha o grupo informando que tudo nele poderá ocorrer nenhuma ou uma vez, ou seja, opcional, indicado pelo quantifier "?".

i)  )$    :  Fecha o grupo formando por "f", "g"  e "h" informando que tudo ocorrerá no final, indicado pela âncora "$".

Excelente! Muito obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software