Solución:
Utilice afirmaciones anticipadas positivas:
var regularExpression = /^(?=.*[0-9])(?=.*[[email protected]#$%^&*])[[email protected]#$%^&*]{6,16}$/;
Sin ella, su expresión regular actual solo coincide con que tiene de 6 a 16 caracteres válidos, no validar que tiene al menos un número, y al menos un personaje especial. Para eso es la búsqueda anticipada de arriba.
-
(?=.*[0-9])
– Afirmar que una cadena tiene al menos un número; -
(?=.*[[email protected]#$%^&*])
– Afirmar que una cadena tiene al menos un carácter especial.
function validatePassword() {
var p = document.getElementById('newPassword').value,
errors = [];
if (p.length < 8) {
errors.push("Your password must be at least 8 characters");
}
if (p.search(/[a-z]/i) < 0) {
errors.push("Your password must contain at least one letter.");
}
if (p.search(/[0-9]/) < 0) {
errors.push("Your password must contain at least one digit.");
}
if (errors.length > 0) {
alert(errors.join("n"));
return false;
}
return true;
}
Hay un cierto problema en la respuesta a continuación, ya que no se verifica la cadena completa debido a la ausencia de [ ] mientras revisa los caracteres y números, esta es la versión correcta
Utilizo el siguiente script para una contraseña mínima de 8 letras, con al menos un símbolo, letras mayúsculas y minúsculas y un número
function checkPassword(str)
{
var re = /^(?=.*d)(?=.*[[email protected]#$%^&*])(?=.*[a-z])(?=.*[A-Z]).{8,}$/;
return re.test(str);
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)