
A expressão regular de palavra-passe serve para controlar a forma de uma palavra-passe e confirmar que a que te enviam é suficientemente forte para aguentar os ataques por força bruta dos bots.
Expressão regular para uma palavra-passe sólida
A expressão regular abaixo verifica que uma palavra-passe:
-
Tem 8 caracteres no mínimo. Ajusta esse número alterando {8,}
-
Leva pelo menos uma letra maiúscula. Podes retirar esta condição eliminando (?=.* ?[A-Z])
-
Leva pelo menos uma letra minúscula. Podes retirar esta condição eliminando (?=.* ?[a-z])
-
Leva pelo menos um algarismo. Podes retirar esta condição eliminando (?=.* ?[0-9])
-
Leva pelo menos um carácter especial. Podes retirar esta condição eliminando (?=.* ?[#?!@$%^&*-])
/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/Versão JavaScript
A função recebe a palavra-passe como parâmetro e compara-a com a expressão regular. Se não encontrar nenhuma correspondência, a validação falha e a função devolve false, se houver correspondência, a palavra-passe tem o formato certo e a função devolve true. Esta é a função JavaScript que valida a palavra-passe
/**
* Valida uma palavra-passe
*
* Se a palavra-passe não for suficientemente segura, devolve false
*
* @param mdp
* @return Boolean
*/
function validateMDP(mdp){
var Reg = new RegExp(/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/);
return Reg.test(mdp);
}Como usar a função JavaScript
A forma mais simples de a usar é dentro de uma declaração IF, como aqui em baixo.
if(validateMDP(mdp)){
alert("Mot de passe valide");
} else {
alert("Mot de passe invalide");
}
See the Pen
Valider un email avec une expression régulière by Damien Flandrin (@dam62500)
on CodePen.0
Versão PHP
/*
* valida palavra-passe
* @param $mdp
*/
function isValidMDP($mdp)
{
return preg_match('/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/', $mdp)
}Versão HTML
Podes verificar em HTML, antes da validação em PHP e JavaScript, com o atributo pattern: dá-te forma de destacar com CSS se a palavra-passe respeita a expressão regular.
<input
name="mdp"
type="text"
pattern="(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}"
/>
See the Pen
Vérifier une date avec une expression régulière en HTML by Damien Flandrin (@dam62500)
on CodePen.0
Esta validação com regex é melhor do que nada, mas quando precisas de mais segurança convém comparar também a palavra-passe introduzida com uma lista de palavras-passe de uso corrente, como:
- .IOlZPf1
- !A1o2e3r4
- etc


