Validar senhas com Javascript
Aprenda a criar regras para cadastrar senhas seguras
A criação de uma senha segura é algo importante para tentar diminuir o risco de invasão da conta do nosso usuário. A validação de senha deve ter feita tanto do lado da aplicação quanto do lado do backend. Vamos ver como fazer validação de senha com JavaScript
Neste exemplo, vamos aprender a criar um script em JavaScript que vai validar se a senha informada atenda a algumas regras. A nossa senha deve ter pelo menos 1 destes elementos:
1 - Letra maíuscula
2 - Letra minúscula
3 - Número
4 - Caractere especial.
Além das regras acima, vamos definir o tamanho da senha como 8 caracteres.
Para validar se existe algum caractere dentro das condições, precisamos criar uma expressão regular. Primeiro, temos que definir qual o modelo que vamos utilizar para cada uma das condições. Isso pode ser feito da seguinte forma:
var letrasMaiusculas = /[A-Z]/;
var letrasMinusculas = /[a-z]/;
var numeros = /[0-9]/;
var caracteresEspeciais = /[!|@|#|$|%|^|&|*|(|)|-|_]/;
Perceba que os padrões que vão servir de referência ficam entre "/".
Como estas variáveis são expressões regulares, elas possuem um método chamado "test" que serve para conferir se o parâmetro enviado é compatível com o padrão. Aqui tem um exemplo:
var letra = "P";
if(letrasMaiusculas.test(letra)){
console.log('sucesso');
} else {
console.log('erro');
}
Como em nosso exemplo, utilizamos uma letra maíuscula, o teste vai retornar com sucesso.
Para validar o tamanho de uma string, existe uma propriedade chamada "length"
var senha = "teste12345";
if(senha.length == 8){
console.log('sucesso');
} else {
console.log('erro');
}
O retorno deste código será "erro" porque a string senha tem 9 caracteres.
Para reaproveitar código no futuro, vamos criar uma função que faça esta validação por nós. A estrutura da função será a seguinte:
1 - Vamos criar expressões regulares com os padrões que vamos seguir.
2 - O código continua a ser executado somente se a senha tiver o tamanho correto
3 - Vamos fazer um "loop" para cada letra de nossa senha. Cada letra será validada de acordo com as regras. Vamos criar variáveis auxiliares para registrar se houve ou não "match", ou seja, se a letra é compatível com alguma das regras.
4 - Por último, vamos conferir estas variáveis auxiliares. Se todas estiverem preenchidas, a senha é compatível. Caso contrário, retornamos false.
A função completa ficará assim:
function senhaValida(p){
var retorno = false;
var letrasMaiusculas = /[A-Z]/;
var letrasMinusculas = /[a-z]/;
var numeros = /[0-9]/;
var caracteresEspeciais = /[!|@|#|$|%|^|&|*|(|)|-|_]/;
if(p.length > 8){
return retorno;
}
if(p.length < 8){
return retorno;
}
var auxMaiuscula = 0;
var auxMinuscula = 0;
var auxNumero = 0;
var auxEspecial = 0;
for(var i=0; i<p.length; i++){
if(letrasMaiusculas.test(p[i]))
auxMaiuscula++;
else if(letrasMinusculas.test(p[i]))
auxMinuscula++;
else if(numeros.test(p[i]))
auxNumero++;
else if(caracteresEspeciais.test(p[i]))
auxEspecial++;
}
if (auxMaiuscula > 0){
if (auxMinuscula > 0){
if (auxNumero > 0){
if (auxEspecial) {
retorno = true;
}
}
}
}
return retorno;
}
console.log(senhaValida("test1234"));
console.log(senhaValida("Test123@"));
console.log(senhaValida("Teste123@"));