2010-03-03 30 views
23

puede ayudarme cualquiera en la creación de una expresión regular para la validación de contraseña.Expresión regular para la validación de contraseña

la condición es "contraseña debe contener 8 caracteres y al menos un número, una letra y un carácter único como !#$%&? "

+0

Las reglas de la contraseña son malas. Consulte [Referencia - Validación de contraseña] (https://stackoverflow.com/questions/48345922/reference-password-validation) para obtener más información. – ctwheels

Respuesta

49
^.*(?=.{8,})(?=.*[a-zA-Z])(?=.*\d)(?=.*[!#$%&? "]).*$ 

--- 

^.*    : Start 
(?=.{8,})  : Length 
(?=.*[a-zA-Z]) : Letters 
(?=.*\d)   : Digits 
(?=.*[!#$%&? "]) : Special characters 
.*$    : End 
+0

+1 para explicación - probado con unos pocos ejemplos y funciona en http://www.regular-expressions.info/javascriptexample.html – amelvin

+0

cansado con 'acf23! & 7h' y no lo valida – Andromeda

+0

No se olvide de escapar Caracteres necesarios ... – Macmade

5

Puede lograr cada uno de los requisitos individuales con bastante facilidad (por ejemplo, un mínimo de 8 caracteres : .{8,} coincidirá con 8 o más caracteres)

combinarlos puede utilizar "búsqueda positiva hacia delante" para aplicar múltiples sub-expresiones para el mismo contenido Algo así como (?=.*\d.*).{8,} para que coincida con uno (o más) dígitos con búsqueda hacia delante, y.. 8 o más caracteres.

Así:

 
(?=.*\d.*)(?=.*[a-zA-Z].*)(?=.*[!#\$%&\?].*).{8,} 

Recordando escapar meta-caracteres.

+1

Tiene algunos ". *" Inútiles allí. Simplemente podría usar: (? =. * \ D) (? =. * [A-zA-Z]) (? =. * [! # \ $% & \?]). {8,} –

+0

@TomLord Me gustaría probar eso ... pero es posible que tenga razón (razón: por supuesto, cada búsqueda positiva solo necesita confirmar hasta una instancia de cada tipo de personaje). – Richard

+0

Sí, y la razón principal por la que lo señalé es que si su expresión regular NO coincide, entonces puede ser mucho más ineficiente determinar esto si incluye innecesarios ".* "s in all! –

7

probar este

((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[\W]).{6,20}) 

Descripción de expresión regular anterior:

(   # Start of group 
    (?=.*\d)  # must contains one digit from 0-9 
    (?=.*[a-z])  # must contains one lowercase characters 
    (?=.*[\W])  # must contains at least one special character 
       .  #  match anything with previous condition checking 
       {8,20} #  length at least 8 characters and maximum of 20 
)   # End of group 

"/ W" aumentará el rango de caracteres que se pueden utilizar para la contraseña y el hoyo puede ser más seguro.

+0

¿Por qué necesita todos los (. *)? Parece funcionar bien si lo hizo: (? = \ d *) (? = [az] *) (? = [AZ ] *) (? = [\ W] *). {6,20} –

1

Puede hacer su propia expresión regular para las validaciones javascript;

 (/^ 
     (?=.*\d)    //should contain at least one digit 
     (?=.*[a-z])    //should contain at least one lower case 
     (?=.*[A-Z])    //should contain at least one upper case 
     [a-zA-Z0-9]{8,}   //should contain at least 8 from the mentioned characters 

     $/) 

Ejemplo: - /^(?=.*\d)(?=.*[a-zA-Z])[a-zA-Z0-9]{7,}$/

4

contraseña con las siguientes condiciones:

  1. Al menos 1 dígito
  2. Al menos 2 caracteres especiales
  3. Al menos 1 carácter alfabético
  4. Sin espacio en blanco

    'use strict'; 
    (function() { 
        var foo = '3g^g$'; 
    
        console.log(/^(?=.*\d)(?=(.*\W){2})(?=.*[a-zA-Z])(?!.*\s).{1,15}$/.test(foo)); 
    
        /** 
        * (?=.*\d)   should contain at least 1 digit 
        * (?=(.*\W){2}) should contain at least 2 special characters 
        * (?=.*[a-zA-Z]) should contain at least 1 alphabetic character 
        * (?!.*\s)   should not contain any blank space 
        */ 
    })(); 
    
Cuestiones relacionadas