Necesito comprobar que un valor(clave) tiene:
- Mínimo 8 caracteres.
- Mayúsculas y minúsculas.
- Números.
- Puede contener
!
o?
, pero ningún otro carácter especial.
Hasta ahora tengo lo siguiente:
function enRango(x, min, max) {
return ((x - min) * (x - max) <= 0);
}
const clave = document.getElementById('clave');
function comprobarContraseña(clave) {
let resul = 0;
for (let i = 0; i < clave.length; i++) {
if (!enRango(clave.charCodeAt(i), 34, 47) || !enRango(clave.charCodeAt(i), 58, 62)) {
if (minusculas.test(clave)) {
if (numeros.test(clave)) {
resul = 1;
console.log('has entrado hasta el final');
return resul;
}
}
} else {
resul = 1;
return resul;
}
if (minusculas.test(clave) && numeros.test(clave)) {
console.log('estas en el minusculas y numeros');
return resul;
}
}
}
minusculas
y numeros
son dos expresiones regulares que he creado, pero al no tener mucho conocimiento en la materia creo que tengo algún fallo a la hora de comprobar.
const minusculas = new RegExp('^[a-z]+$');
const numeros = new RegExp('^[0-9]+$');
Creo que puede comprobarse todo directamente con una Expresión Regular pero no sé exactamente como hacerlo.