Tengo una expresión regular para validar contraseñas.
/[\w\d]*(([0-9]+.*[A-Za-z]+.*)|[A-Za-z]+.*([0-9]+.*))/
Esta expresión regular coincide con cualquier palabra que contenga letras y números.
También quiero agregar una restricción de longitud mínima, sé que podemos usar {4,} para agregar una longitud mínima de 4.
Pero no puedo averiguar cómo agregar esta longitud mínima a toda la expresión.
Por ejemplo: la expresión regular anterior coincide con p12 como válida.
No quiero que coincida con palabras con letras y números con una longitud de menos de 4.
Intenté esto, pero esto no funcionó
/[\w\d]*(([0-9]+.*[A-Za-z]+.*)|[A-Za-z]+.*([0-9]+.*)){4,}/
Se agradecería cualquier ayuda con respecto a agregar una restricción de longitud mínima a toda la expresión.
Gracias.
El uso de \w también coincide con \d , por lo que estas partes [\w\d]* se pueden escribir simplemente como \w*
Si desea hacer coincidir solo caracteres de palabras, puede usar, por ejemplo, 2 afirmaciones para el carácter az y un dígito.
Usando un patrón que no distingue entre mayúsculas y minúsculas:
/^(?=[^\d\n]*\d)(?=[^az\n]*[az])\w{4,}$/iDemostración de expresiones regulares
const regex = /^(?=[^\d\n]*\d)(?=[^az\n]*[az])\w{4,}$/; [ "p12", "1234", "abcs", "p123" ].forEach(s => console.log(`${s} --> ${regex.test(s)}`));