1
resposta

A solução apresentada não funciona no Desafio #1

A primeira parte deveria ser limitada a 15 caracteres, mas se utilizarmos este exemplo (super.mariobarata@caelum.com.br) a regex aceita retornando (per.mariobarata), sendo que a primeira parte tem mais de 15 caracteres e não deveria ser aceita. Como resolver essa falha?

1 resposta

Opa Jonathas! Tudo bom?

Não sei se é algo que o curso já viu, mas tem suas soluções possíveis:

  1. Delimitar que a expressão começa no início da frase, com ^:

    ^([a-z.]{4,14}[a-z\d])@(?:caelum.com.br|alura.com.br)

    Isso faz com que o primeiro caractere aceito tenha que estar no início da String de entrada. A entrada " super.mario@caelum.com.br" falharia por que o primeiro caractere não bate, já que é esperado uma letra ou ponto.

  2. Delimitar que a expressão começa no início de uma palavra, com \b:

    (\b[a-z.]{4,14}[a-z\d])@(?:caelum.com.br|alura.com.br)

    Isso faz com que a expressão tenha que reconhecer um limite de palavra pra começar a aceitar a entrada. Início de palavra se delimita por letras seguidas ou seguindo espaços, hifens, caracteres especiais como @ ou \n.. etc.

Deu pra entender? Qualquer coisa pode perguntar mais por aqui!