
La expresión regular de contraseña sirve para controlar la forma de una contraseña y comprobar que la que te envían es lo bastante fuerte como para resistir los ataques por fuerza bruta de los bots.
Expresión regular para una contraseña sólida
La expresión regular de abajo comprueba que una contraseña:
-
Tiene 8 caracteres como mínimo. Ajústalo cambiando {8,}
-
Lleva al menos una letra mayúscula. Puedes quitar esta condición eliminando (?=.* ?[A-Z])
-
Lleva al menos una letra minúscula. Puedes quitar esta condición eliminando (?=.* ?[a-z])
-
Lleva al menos una cifra. Puedes quitar esta condición eliminando (?=.* ?[0-9])
-
Lleva al menos un carácter especial. Puedes quitar esta condición eliminando (?=.* ?[#?!@$%^&*-])
/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/Versión JavaScript
La función recibe la contraseña como parámetro y la compara con la expresión regular. Si no encuentra ninguna coincidencia, la validación falla y la función devuelve false, si la coincidencia funciona, la contraseña tiene el formato correcto y la función devuelve true. Esta es la función JavaScript que valida la contraseña
/**
* Valida una contraseña
*
* Si la contraseña no es lo bastante segura, devuelve false
*
* @param mdp
* @return Boolean
*/
function validateMDP(mdp){
var Reg = new RegExp(/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/);
return Reg.test(mdp);
}Cómo usar la función JavaScript
La forma más sencilla de usarla es dentro de una declaración IF, como aquí abajo.
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
Versión PHP
/*
* valida contraseña
* @param $mdp
*/
function isValidMDP($mdp)
{
return preg_match('/^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}$/', $mdp)
}Versión HTML
Puedes comprobarlo en HTML, antes de la validación en PHP y JavaScript, con el atributo pattern: te permite destacar con CSS si la contraseña respeta la expresión 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 validación con regex es mejor que nada, pero cuando necesites más seguridad conviene comprobar además la contraseña introducida contra una lista de contraseñas de uso habitual, como:
- .IOlZPf1
- !A1o2e3r4
- etc


