1
resposta

Alguém poderia me explicar detalhadamente qual é a regra que está determinada em cada grupo desta Regex ? Eu estou a perguntar porque no curso de Expressões Regulares não foi explicado acerca de "Positive Lookahead e Negative Lookahead".

^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?!.*[!@#$%^&*]).{6,12}$
1 resposta

Olá Eugenio, tudo bem ? Tentei explicar da melhor maneira possível, espero ter ajudado de alguma forma. Voce pode conferir o link abaixo com a documentação do regex, eles tem alguns exemplos que ajudam a compreender melhor. Ainda estou aprendendo também então a explicação pode conter alguns erros, caso tenha, favor mandar aqui a correção =D.

https://regexr.com/3bfsi

^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?!.*[!@#$%^&*]).{6,12}$

^ - início do alvo

(?=.*[a-z])

() Declaramos um grupo

?= associa os caracteres de acordo com o grupo declarado após o mesmo

.* o "ponto" que significa qualquer char + "asterisco" que associa um ou mais caracteres

[a-z] - letras de a até z

A diferença para o próximo grupo são só os tipos das letras, que no primeiro é minúscula e no segundo maiúscula.

(?=.*[0-9])

() Declaramos um grupo

?= associa os caracteres de acordo com o grupo declarado

.* o "ponto" que significa qualquer char + "asterisco" que associa um ou mais caracteres

[0-9] - intervalo de números

(?!.[!@#$%^&])

() Declaramos um grupo

?! associa os caracteres de acordo com o grupo declarado que não podem estar presentes

.* o "ponto" que significa qualquer char + "asterisco" que associa um ou mais caracteres

[!@#$%&*] conjunto de símbolos que não podem estar presentes

.{6,12}

{n,m} - no mínimo n vezes, no máximo m vezes.

$ - fim do alvo