2010-03-03 3 views
23

может ли кто-нибудь помочь мне в создании регулярного выражения для проверки пароля.Регулярное выражение для проверки пароля

Условием является «Пароль должен содержать 8 символов и, по меньшей мере, одно число, одну букву и один уникальный характер, такие как !#$%&? "

+0

Правила пароля плохие. Для получения дополнительной информации см. [Справка - Проверка пароля] (https://stackoverflow.com/questions/48345922/reference-password-validation). – ctwheels

ответ

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

--- 

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

+1 для объяснения - проверено с помощью нескольких примеров и работает на http://www.regular-expressions.info/javascriptexample.html – amelvin

+0

Я устал от «acf23! & 7h» и не проверял его – Andromeda

+0

Не забудьте сбежать необходимые символы ... – Macmade

5

Вы можете достичь каждого из индивидуальных требований достаточно легко (например, не менее 8 символов : .{8,} будет соответствовать 8 или более символов)

чтобы объединить их, вы можете использовать «положительный предпросмотр», чтобы применить несколько подвыражения к тому же содержанию Что-то вроде (?=.*\d.*).{8,}, чтобы соответствовать один (или более) цифр с опережающего просмотра, и.. 8 или более символов.

Итак:

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

Вспоминая, чтобы избежать мета-символы.

+1

У вас есть несколько бессмысленных «. *». Вы можете просто использовать: (? =. * \ D) (? =. * [A-zA-Z]) (? =. * [! # \ $% & \?]). {8,} –

+0

@TomLord Я бы хотел проверить это ... но вы вполне можете быть правы (причина: конечно, каждый положительный взгляд должен только подтвердить один экземпляр каждого типа персонажа). – Richard

+0

Да, и основная причина, по которой я указал это, состоит в том, что если ваше регулярное выражение НЕ соответствует, то это может быть сделано гораздо более неэффективным, чтобы определить это, если вы включите ненужное ».* «s там! –

7

Попробуйте

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

Описание выше регулярных выражений:

(   # 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» увеличит диапазон символов, которые могут быть использованы для пароля и ямы могут быть более безопасными.

+0

Зачем вам все (. *)? Кажется, что вы прекрасно работаете, если вы только что сделали: (? = \ d *) (? = [az] *) (? = [AZ ] *) (? = [\ W] *). {6,20} –

1

Вы можете сделать собственное регулярное выражение для 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 

     $/) 

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

4

Пароль со следующими условиями:

  1. По крайней мере, одна цифра
  2. По крайней мере, 2 специальных символов
  3. По крайней мере, 1 буквенный символ
  4. Без пробела

    '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 
        */ 
    })(); 
    
Смежные вопросы