Validar senhas com Javascript

Validar senhas com Javascript

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@"));

 

 

Está começando e deseja saber o que precisa estudar de HTML e JavaScript? Não deixe de conferir os roteiros de estudo de HTML e JavaScript!. São dezenas de conteúdos para você melhorar suas habilidades.

Roteiro de estudos - HTML e CSS

Roteiro de estudos - Javascript

 

Outros conteudos que podem ser de seu interesse

Calcular a diferença  entre horas utilizando JavaScript
20/02/2022JAVASCRIPT

Calcular a diferença entre horas utilizando JavaScript

Veja como calcular a diferença entre horários utilizando JavaScript

Saiba mais...
Resolvendo problemas comuns de matemática com JavaScript
03/07/2022JAVASCRIPT

Resolvendo problemas comuns de matemática com JavaScript

Descubra como o JavaScript pode te ajudar a resolver problemas comuns de matemática

Saiba mais...

Conteúdo sobre banco de dados sem complicação!