¿Cuál es la expresión regular para asegurarse de que una cadena de caracteres contiene al menos un carácter de cada una de las siguientes categorías.

  • Carácter en minúscula
  • Carácter en mayúsculas
  • Dígitos
  • Símbolo

Sé que los patrones de lances individuales a saber [a-z], [A-Z], \d y _|[^\w] (tengo correcto, ¿no?).

Pero ¿cómo combinarlos para asegurarse de que la cadena contiene todos estos en cualquier orden?

  • Lo de la plataforma/regex-dialecto? Bart la respuesta es correcta, pero oteo afirmaciones no son fiables en JavaScript, por ejemplo.
  • Ningún lugar en particular – estoy aprendiendo regex. Hay una alternativa que puede ser utilizado en javascript?
  • Hola, estoy tratando de averiguar por qué oteo afirmaciones no son fiables en Javascript. Hay una valoración crítica sobre esto?
  • Hay una realidad confusa IE/JScript error: blog.stevenlevithan.com/archives/regex-lookahead-bug
InformationsquelleAutor Amarghosh | 2009-10-13

3 Comentarios

  1. 312

    Si usted necesita una sola expresión regular, trate de:

    (?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*\W)

    Una breve explicación:

    (?=.*[a-z])        //use positive look ahead to see if at least one lower case letter exists
    (?=.*[A-Z])        //use positive look ahead to see if at least one upper case letter exists
    (?=.*\d)           //use positive look ahead to see if at least one digit exists
    (?=.*\W])        //use positive look ahead to see if at least one non-word character exists

    Y estoy de acuerdo con SilentGhost, \W podría ser un poco amplio. Me gustaría reemplazarlo con un conjunto de caracteres como este: [[email protected]#$%^&*.,?] (siéntase libre de añadir más, por supuesto!)

    • ¿Qué pasaría si puedo cambiar el pasado .+ en .*? Yo no podía llegar con un caso de prueba que se produce .*. Son ellos mismo en este contexto? «Cero o más caracteres» parece estar bien – sólo la búsqueda de la confirmación.
    • en este caso, no hace ninguna diferencia. A causa de la mirada positiva-cabezas, la cadena ya contiene al menos 4 caracteres. Así que no hace ninguna diferencia para cambiar .+ en .* o incluso .{4,} para esa materia.
    • Si usted estaría dispuesto a añadir un poco de explicación, estoy teniendo problemas con la comprensión de cómo la combinación de estos lookaheads garantiza al menos 1 de cada conjunto de caracteres estará presente
    • No sé cómo reformular con el fin de hacer que sea más fácil de entender. Especialmente en estos pequeños comentarios-cajas. Les recomiendo leer esto: regular-expressions.info/lookaround.html y si usted todavía tiene preguntas, simplemente publicar una pregunta de su propio. Buena suerte!
    • ¿Qué pasa si no quiero ningún símbolo? la eliminación de (?=.*[_\W]) no funciona regex101.com/r/jH9rK1/1
    • intentar algo como esto: ^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?!.*[&%$]).{6,}$
    • Gracias,es posible lograr un similar regex con un mínimo de recuento. ex: 2 mayúscula, 2 minúsculas, 2 numérico & específico de caracteres especiales (%aAa1A2$) debe ser válida. lo siento, Intentado muchas solución, pero no a podido lograr.. he intentado de la siguiente modificado RegEx de su ^(?=.*[a-z]{2})(?=.*[A-Z]{2})(?=.*\d{2})(?=.*([%]{2})).{8,10}$.
    • Cómo hacer una estricta verificación para cada uno de los de arriba, junto con la condición de que un alfabeto debe estar en el inicio, seguido de un número que termina con un carácter especial, finalmente?
    • los comentarios no son muy adecuadas para pedir (o contestando preguntas. Siéntase libre para crear una pregunta de su propio.
    • En mi caso fue atlest 1 inferior, al menos 1 superior, al menos 1 dígito O 1 símbolo y min longitud de 8. (?=.*[a-z])(?=.*[A-Z])(?=.*(\d|\W)).{8,}

  2. 14

    Bart Kiers, su expresión regular tiene un par de problemas. La mejor manera de hacerlo es esta:

    (.*[a-z].*)       //For lower cases
    (.*[A-Z].*)       //For upper cases
    (.*\d.*)          //For digits

    De esta manera usted está buscando, no importa si al principio, al final o en el medio. En su haber tengo un montón de problemas con las contraseñas complejas.

    • No eres la comprobación de símbolos como el OP solicitado.
  3. 5

    Puede coincidir con los tres grupos por separado, y asegúrese de que todos los presentes. También, [^\w] parece un poco demasiado amplia, pero si eso es lo que desea es posible que desee reemplazar con \W.

    • Gracias. Yo no era consciente de \W. Sólo miró a encontrar que los partidos No de la Palabra. Hay alguna diferencia entre \W y [\W]? Es [\W] sólo redundante?
    • sí, \W y [\W] resultado de la misma.

Dejar respuesta

Please enter your comment!
Please enter your name here