Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

208
Vistas
Cómo comprobar si hay caracteres especiales en la contraseña

Estoy tratando de validar una contraseña determinada comprobando mayúsculas, minúsculas y caracteres especiales. Se supone que el programa almacena verdadero para cada requisito encontrado y falso para cada uno que no encuentra. Si alguno de los requisitos no se encuentra, el programa imprime un mensaje de error, así como los resultados de búsqueda para cada requisito. El problema es que la variable de carácter especial sigue regresando como falsa incluso cuando hay un carácter especial en la contraseña. Parece que la función especial que pide que se verifique el carácter especial nunca se llama, pero no sé por qué. ¿Alguien puede ayudar?

 // Assume password input is "Patick_" const passwordForSignup = document.getElementById("input-password"); const arrayOfSp = ["!", "@", "#", "$", "%", "&", "*", "_", "-", "?"]; const special = (c) => { console.log(c); for (let i = 0; i < arrayOfSp.length; i++) { if (c === arrayOfSp[i]) { return true; } } return false; } if (passwordForSignup.value.length >= 6 && passwordForSignup.value.length <= 17) { let upperCaseCheck = false; let lowerCaseCheck = false; let specialCharacterCheck = false; let passwordValue = ""; for (let i = 0; i < passwordForSignup.value.length; i++) { passwordValue = passwordForSignup.value[i]; if (passwordForSignup.value[i] === passwordValue.toUpperCase()) { upperCaseCheck = true; } else if (passwordForSignup.value[i] === passwordValue.toLowerCase()) { lowerCaseCheck = true; } else if (special(passwordValue)) { specialCharacterCheck = true; } } if (!upperCaseCheck || !lowerCaseCheck || !specialCharacterCheck) { console.log("Something is wrong"); console.log(upperCaseCheck); console.log(lowerCaseCheck); console.log(specialCharacterCheck); } } // else // { // message.push("Password must contain 6 - 17 characters"); // errorFound(message, e); // }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

La razon es que su cheque especial se hace para el ultimo y

 "_".toUpperCase()

por ejemplo devolver "_"
Probar:

 if (special(passwordValue)) { specialCharacterCheck = true; } else if (passwordForSignup.value[i] === passwordValue.toUpperCase()) { upperCaseCheck = true; } else if (passwordForSignup.value[i] === passwordValue.toLowerCase()) { lowerCaseCheck = true; }

Sin embargo, esta no es la manera de hacerlo. En su lugar, utilice expresiones regulares.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Pruebe los patrones de expresiones regulares, como este ejemplo.

 const regex = /^(?=.*[az])(?=.*[AZ])(?=.*\d)(?=.*[-+_!@#$%^&*., ?]).+$/; function check_pass(){ var pass=document.getElementsByName("pass")[0].value; console.log(regex.test(pass)); }
 <input type='text' name='pass'><button id='test' onclick='check_pass()'>Check</button>

dónde:

^ representa el comienzo de la cadena.

(?=.*[az]) representan al menos un carácter en minúscula.

(?=.*[AZ]) representa al menos un carácter en mayúscula.

(?=.*\d) representa al menos un valor numérico.

(?=.*[-+_!@#$%^&*., ?]) representa al menos uno de los caracteres especiales.

Y si desea cheques separados, puede hacerlo así:

 const lower = /^(?=.*[az])/; const upper = /^(?=.*[AZ])/; const nums = /^(?=.*\d)/; const special = /^(?=.*[-+_!@#$%^&*., ?]).+$/; function check_pass() { var pass = document.getElementsByName("pass")[0].value; console.log('Lower: ' + lower.test(pass)); console.log('Upper: ' + upper.test(pass)); console.log('Numbers: ' + nums.test(pass)); console.log('Specials: ' + special.test(pass)); }
 <input type='text' name='pass'><button id='test' onclick='check_pass()'>Check</button>

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda