2010-12-13 11 views

Respuesta

21

Puede utilizar las afirmaciones de búsqueda hacia delante para comprobar la existencia de cualquier dígito y cualquier carta como:

^(?=.*[a-zA-Z])(?=.*[0-9]) 
+0

Gracias, funcionó como un amuleto (: – FallenAngel

+2

Puede soltar la parte '. * $' –

+0

@TimPietzcker: Tiene razón.Gracias. – codaddict

0
/.*?(?:[a-z].*?[0-9]|[0-9].*?[a-z]).*?/ 

(solo uno solución posible)

+0

¿Qué pasa con mayúsculas? Además, ¿qué hace '. *?' Exactamente y cómo se usa antes del '|' pero no en el bit después? – AlastairG

+0

Agregue una bandera 'i',' '?' 'Es una coincidencia ambiciosa (google it). Y olvidé hacerlo en la segunda parte de la tubería. – poke

+2

¿No es '*?' A * non * -greedy match? –

1
([0-9].*[a-zA-Z])\|([a-zA-Z].*[0-9]) 

No estoy seguro si la tubería necesita ser escapado en su entorno expresión regular o no.

5

El uso de una sola expresión regular para que esto puede conducir a un tanto de código ilegible/poco fiable. Puede tener más sentido usar expresiones regulares más simples, por ejemplo, [0-9] para verificar la existencia de un dígito y romper los requisitos de su comprobador de fuerza de contraseñas en una línea múltiple if. También esto le permite saber más fácilmente en qué etapa falló la validación y posiblemente hacer sugerencias al usuario.

0

solución simple para comprobar si la contraseña que contenga al menos una letra, al menos un dígito y no hay espacios:

\S*(\S*([a-zA-Z]\S*[0-9])|([0-9]\S*[a-zA-Z]))\S* 
+1

¿Cómo difiere esto/mejora las respuestas existentes? Es preferible incluir un descripción, especialmente en tal caso. – Bowdzone

Cuestiones relacionadas