Olá Ricardo, tudo bem com você?
Ainda bem que você abriu esse tópico, há um erro nessa regex, o ponto (.
) não está sendo visto como "ponto" e sim como um meta-carácter da própria regex que significa qualquer coisa.
Vou te dar um exemplo: Se substituíssemos o email de: rodrigo@gmail.com
para rodrigo@gmail9com
ele ainda iria encontrar
A regex corrigida que encontra tanto email com .com
como .com.br
seria a seguinte:
regex_corrigida = "\w{2,50}@\w{2,15}\.[a-z]{2,3}\.?([a-z]{2,3})?"
Veja que antes do ponto eu adicionei o carácter de escape ( \ ) para identificar que quero realmente o ponto
Ele está capturando email que contém apenas o .com
porque eu identifico aqui:
\.?([a-z]{2,3})?
Utilizando o quantificador da regex : ?
- Que pode haver zero ou uma vez um ponto final
- Que pode haver zero ou uma vez de 2 a 3 carácteres de a-z
Agora caso o objetivo fosse capturar apenas com .com.br
seria:
regex_corrigida = "\w{2,50}@\w{2,15}\.[a-z]{2,3}\.[a-z]{2,3}"
Para entender todas essas particularidades da Regex temos um curso que aborda todos os tópicos aqui na Alura: Curso Regex
Muito obrigado novamente :)
Abraços e Bons Estudos!