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

Alterando o pattern para iniciar somente com minúsculas, está considerando os iniciados com . também

Pessoal,

Perdoem a minha ignorância, mas queria deixar a expressão um pouco mais próxima da realidades, ou seja, permitir iniciar apenas com letras minúsculas.

Então fiz o seguinte pattern:

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

No meu entendimento, qualquer e-mail iniciado por ponto ('.'), não deveria dar match, porém ao executar o pattern acima no seguinte alvo:

markus@caelum.com.br
markus.candido@alura.com.br
.markus.candido2@alura.com.br
markuscandido2@alura.com.br

É retornado 4 matches, mas penso que deveriam ser retornados somente 3.

Olhando o Highlight bem como o resultado, realmente o ponto(.) não foi considerado, mas mesmo assim contabilizou.

É assim mesmo? Penso que não deveria dar match na terceira linha (.markus.candido2@alura.com.br)

3 respostas

E aí, Markus! Tudo certinho, cara? =)

Mandou bem nessa dúvida, cara!! Quando você cria uma expressão, ela irá verificar se tem ou não aquela sequência... Se você quiser que ela comece obrigatoriamente com aquele caractere, você pode usar o ^, assim:

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

Ao colocar ^[a-z] no começo, estou dizendo que a sentença a ser capturada deve começar com um caractere minúsculo, como você sugeriu, sacou? =)

Espero ter ajudado, mas qualquer coisa não deixe de postar por aqui para que possamos ajudá-lo!! =D

Abraço e bons estudos,

Fábio

Da forma como você sugeriu, valida somente o primeiro registro. Para um cadastro de usuário, funcionaria. Mas para uma validação em lote, não está funcionando.

Mesmo assim, obrigado pelo retorno.

solução!

Markus,

Estranho... Eu testei que aqui funcionou. Você está usando quais flags para sua RegEx?

Geralmente fazemos algo como abaixo:

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

Dessa forma, estamos usando apenas a flag global, representado pelo g, ao final. Se quisermos buscar em várias linhas, usamos a flag multiline, representada pela letra m, assim:

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

Você está testando usando-a? =D

Fábio