es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

EXPRESIÓN REGULAR para validar contraseñas que no pueden contener ciertos caracteres.

Necesito verificar si una contraseña cumple con las siguientes reglas:
– Al menos 8 caracteres (longitud)
– Una letra mayúscula
– Una letra minúscula
– Un número
– Un carácter especial
– No puede contener ‘.’ o ‘_’ (parte complicada)

Por ejemplo:
– Bft$ns2E => debería cumplir con las reglas
– H2od%^.,3 => no debería cumplir (observa el ‘.’)

Intenté esto:

^(?=.?[A-Z])(?=(.[a-z]){1,})(?=(.[\d]){1,})(?=(.[\W]){1,})(?!.*\s).{8,}$

Esto cumple con todas las reglas, excepto la última (No puede contener ‘.’ o ‘_’). Las expresiones regulares siempre son un dolor para mí y no puedo encontrar la forma de hacer esto.

¡Gracias a todos!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para excluir ‘.’ y ‘_’ de la contraseña, puedes agregar una apariencia negativa hacia adelante a tu patrón regex existente de esta manera:

    ^(?=.*?[A-Z])(?=(.*[a-z]){1,})(?=(.*[\d]){1,})(?=(.*[\W]){1,})(?!.*[\._]).{8,}$
    

    La parte (?!.*[\._]) significa “no coincidir si hay un ‘.’ o ‘_’ adelante”. Esto debería cumplir con todas las reglas que mencionaste.

Comments are closed.