/^(?=.\d)(?=.[a-z])(?=.[A-Z])(?=.[$&@#])[0-9a-zA-Z$&@#]{6,}$/
-Minimo de 6 caracteres -1 letra Maiuscula -1 número -1 caractere especial
/^(?=.\d)(?=.[a-z])(?=.[A-Z])(?=.[$&@#])[0-9a-zA-Z$&@#]{6,}$/
-Minimo de 6 caracteres -1 letra Maiuscula -1 número -1 caractere especial
Olá, Francisco! Tudo bem?
Sua expressão regular para validação de senha está quase perfeita, mas há um pequeno ajuste que pode ser feito para garantir que todos os critérios sejam atendidos corretamente. Vamos revisar sua expressão e compará-la com a recomendação do curso:
Sua expressão:
/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[$*&@#])[0-9a-zA-Z$*&@#]{6,}$/
A expressão recomendada pelo curso:
^(?=.*[A-Z])(?=.*\d)(?=.*[@#$%^&+=]).*$
Vamos entender as diferenças e como podemos ajustar a sua expressão:
Caractere Especial: Na sua expressão, você está usando [$*&@#]
para os caracteres especiais. Isso é totalmente válido, mas certifique-se de que esses são os únicos caracteres especiais permitidos. A expressão do curso usa [@#$%^&+=]
, que é um conjunto ligeiramente diferente.
Comprimento Mínimo: Sua expressão já garante que a senha tenha no mínimo 6 caracteres com {6,}
, o que é ótimo.
Ordem dos Lookaheads: A ordem dos lookaheads não afeta a funcionalidade, então isso está correto tanto na sua expressão quanto na recomendada.
Conjunto de Caracteres Permitidos: Sua expressão [0-9a-zA-Z$*&@#]
define explicitamente os caracteres permitidos na senha. Isso pode ser útil, mas não é estritamente necessário se você está apenas validando a presença dos requisitos mínimos.
Aqui está uma versão ajustada da sua expressão que combina os elementos recomendados:
/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=])[0-9a-zA-Z@#$%^&+=]{6,}$/
Essa expressão garante:
\d
)[a-z]
)[A-Z]
)[@#$%^&+=]
)Espero ter ajudado e bons estudos!