Quería que mis contraseñas incluyeran al menos: 1 mayúscula, 1 carácter especial. Estoy intentando con este ciclo while cumplir con los requisitos. ¿Qué estoy haciendo mal?
const characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ#$!-_"; const capital = /ABCDEFGHIJKLMNOPQRSTUVWXYZ/; const special = /#$!-_/; function PWord (){ let pass = "" while(!((capital.test(pass)) && (special.test(pass))) ){ for (i=0; i<=11; i++) { let rand_char = characters.charAt(Math.floor(Math.random()*characters.length)); pass = pass + rand_char; } return pass } } for(let i=0;i<=3;i++){ let ps = PWord(); console.log("Password" + (i+1) + ":" + ps); }El problema principal que veo aquí es el uso de return en el bucle while. return siempre finalizará la ejecución de toda la función y devolverá el valor especificado. La condición en su bucle solo se verificará una vez desde que regrese antes de darle la oportunidad de verificar y ejecutar nuevamente. Intenta mover esa línea fuera del bucle.