2016-06-18 3 views
2

Мне нужно регулярное выражение для проверки пароля. Эти ограничения являются:Regex для проверки пароля

-Максимальных Встроенных Пространства: 0

-Минимальной Длина: 8

-Максимальной Длина: 8

-Должно не содержат буквы: Q, Q, Z, Z

-Максимальных вхождения одного символа/Номера: 2

-Максимальный Повторные символы/кол-во: 2

-Максимальная Последовательная Характер: 3

-Максимальных специальные символы: 0

-Минимального алфавит: 1

-минимума Числа: 1

Не уверен, как я должен идти об этом, следует ли принимать отрицательный или позитивный подход.

+1

Что вы пробовали до сих пор? С чем вы, в частности, сталкиваетесь? –

+0

Что такое 'характер' для вас? И «особый символ»? – Toto

+0

@KyleFalconer Я попытался использовать отрицательный подход для проверки на Q, q, Z, z, ''. Но таким образом, если я попытался добавить условие для последовательных символов, он не работал. Если бы я попытался положительный подход, я не смог бы правильно проверить, должны ли Q, q, Z, z, '' отсутствовать. – sohil

ответ

3

Описание

^(?!.*?([a-z0-9])(?:.*?\1){2})(?=.*?[a-z])(?=.*?[0-9])(?!.*?(?:0(?:123|987)|1234|2345|3(?:456|210)|4(?:567|321)|5(?:678|432)|6(?:789|543)|7(?:890|654)|8765|9876))(?!.*?(?:abcd|bcde|cdef|d(?:efg|cba)|e(?:fgh|dcb)|f(?:ghi|edc)|g(?:hij|fed)|h(?:ijk|gfe)|i(?:jkl|hgf)|j(?:klm|ihg)|k(?:lmn|jih)|l(?:mno|kji)|m(?:nop|lkj)|nmlk|onml|ponm|rstu|stuv|tuvw|u(?:vwx|tsr)|v(?:wxy|uts)|w(?:vut)|xwvu|yxwv))[a-pr-y0-9]{8}$

Regular expression visualization

Это регулярное выражение разбивается на компоненты, которые будут делать следующее:

  1. ^[a-pr-y0-9]{8}$
    • Llow без пробелов
    • Требовать 8 символов, не больше не меньше
    • не позволяют буквы: Q, q, Z, z
    • Разрешить нулевые специальные символы
  2. (?!.*?([a-z0-9])(?:.*?\1){2})
    • Разрешить любому символу не более 2 раз в любой точке строки
    • (?=.*?[a-z])
    • Требуют минимум 1 письма
  3. (?=.*?[0-9])
    • Требуется минимум 1 разряда
  4. (?!.*?(?:0(?:123|987)|1234|2345|3(?:456|210)|4(?:567|321)|5(?:678|432)|6(?:789|543)|7(?:890|654)|8765|9876))(?!.*?(?:abcd|bcde|cdef|d(?:efg|cba)|e(?:fgh|dcb)|f(?:ghi|edc)|g(?:hij|fed)|h(?:ijk|gfe)|i(?:jkl|hgf)|j(?:klm|ihg)|k(?:lmn|jih)|l(?:mno|kji)|m(?:nop|lkj)|nmlk|onml|ponm|rstu|stuv|tuvw|u(?:vwx|tsr)|v(?:wxy|uts)|w(?:vut)|xwvu|yxwv))

    • Разрешить до 3 последовательных символов, abc нормально, но abcd плохо
    • Разрешить до 3 обратной последовательности символов, cba нормально, но dcba плохо

Примечание: Это выражение требует использования без учета регистра флаг заказовМои, чтобы соответствовать верхний и нижний регистр.

Пример

Демо

https://regex101.com/r/gL9jN5/4

Пример текста

12345678 
asfkd2ls 
abcd12js 
ibicid13 
aaaafd212 
fdadms1 

Образец Матчи

asfkd2ls 

Объяснение

NODE      EXPLANATION 
---------------------------------------------------------------------- 
^      the beginning of a "line" 
---------------------------------------------------------------------- 
    (?!      look ahead to see if there is not: 
---------------------------------------------------------------------- 
    .*?      any character except \n (0 or more times 
          (matching the least amount possible)) 
---------------------------------------------------------------------- 
    (      group and capture to \1: 
---------------------------------------------------------------------- 
     [a-z0-9]     any character of: 'a' to 'z', '0' to 
           '9' 
---------------------------------------------------------------------- 
    )      end of \1 
---------------------------------------------------------------------- 
    (?:      group, but do not capture (2 times): 
---------------------------------------------------------------------- 
     .*?      any character except \n (0 or more 
           times (matching the least amount 
           possible)) 
---------------------------------------------------------------------- 
     \1      what was matched by capture \1 
---------------------------------------------------------------------- 
    ){2}      end of grouping 
---------------------------------------------------------------------- 
)      end of look-ahead 
---------------------------------------------------------------------- 
    (?=      look ahead to see if there is: 
---------------------------------------------------------------------- 
    .*?      any character except \n (0 or more times 
          (matching the least amount possible)) 
---------------------------------------------------------------------- 
    [a-z]     any character of: 'a' to 'z' 
---------------------------------------------------------------------- 
)      end of look-ahead 
---------------------------------------------------------------------- 
    (?=      look ahead to see if there is: 
---------------------------------------------------------------------- 
    .*?      any character except \n (0 or more times 
          (matching the least amount possible)) 
---------------------------------------------------------------------- 
    [0-9]     any character of: '0' to '9' 
---------------------------------------------------------------------- 
)      end of look-ahead 
---------------------------------------------------------------------- 
    (?!      look ahead to see if there is not: 
---------------------------------------------------------------------- 
    .*?      any character except \n (0 or more times 
          (matching the least amount possible)) 
---------------------------------------------------------------------- 
    (?:      group, but do not capture: 
---------------------------------------------------------------------- 
     0      '0' 
---------------------------------------------------------------------- 
     (?:      group, but do not capture: 
---------------------------------------------------------------------- 
     123      '123' 
---------------------------------------------------------------------- 
     |      OR 
---------------------------------------------------------------------- 
     987      '987' 
---------------------------------------------------------------------- 
    )      end of grouping 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     1234      '1234' 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     2345      '2345' 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     3      '3' 
---------------------------------------------------------------------- 
     (?:      group, but do not capture: 
---------------------------------------------------------------------- 
     456      '456' 
---------------------------------------------------------------------- 
     |      OR 
---------------------------------------------------------------------- 
     210      '210' 
---------------------------------------------------------------------- 
    )      end of grouping 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     4      '4' 
---------------------------------------------------------------------- 
     (?:      group, but do not capture: 
---------------------------------------------------------------------- 
     567      '567' 
---------------------------------------------------------------------- 
     |      OR 
---------------------------------------------------------------------- 
     321      '321' 
---------------------------------------------------------------------- 
    )      end of grouping 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     5      '5' 
---------------------------------------------------------------------- 
     (?:      group, but do not capture: 
---------------------------------------------------------------------- 
     678      '678' 
---------------------------------------------------------------------- 
     |      OR 
---------------------------------------------------------------------- 
     432      '432' 
---------------------------------------------------------------------- 
    )      end of grouping 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     6      '6' 
---------------------------------------------------------------------- 
     (?:      group, but do not capture: 
---------------------------------------------------------------------- 
     789      '789' 
---------------------------------------------------------------------- 
     |      OR 
---------------------------------------------------------------------- 
     543      '543' 
---------------------------------------------------------------------- 
    )      end of grouping 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     7      '7' 
---------------------------------------------------------------------- 
     (?:      group, but do not capture: 
---------------------------------------------------------------------- 
     890      '890' 
---------------------------------------------------------------------- 
     |      OR 
---------------------------------------------------------------------- 
     654      '654' 
---------------------------------------------------------------------- 
    )      end of grouping 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     8765      '8765' 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     9876      '9876' 
---------------------------------------------------------------------- 
    )      end of grouping 
---------------------------------------------------------------------- 
)      end of look-ahead 
---------------------------------------------------------------------- 
    (?!      look ahead to see if there is not: 
---------------------------------------------------------------------- 
    .*?      any character except \n (0 or more times 
          (matching the least amount possible)) 
---------------------------------------------------------------------- 
    (?:      group, but do not capture: 
---------------------------------------------------------------------- 
     abcd      'abcd' 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     bcde      'bcde' 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     cdef      'cdef' 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     d      'd' 
---------------------------------------------------------------------- 
     (?:      group, but do not capture: 
---------------------------------------------------------------------- 
     efg      'efg' 
---------------------------------------------------------------------- 
     |      OR 
---------------------------------------------------------------------- 
     cba      'cba' 
---------------------------------------------------------------------- 
    )      end of grouping 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     e      'e' 
---------------------------------------------------------------------- 
     (?:      group, but do not capture: 
---------------------------------------------------------------------- 
     fgh      'fgh' 
---------------------------------------------------------------------- 
     |      OR 
---------------------------------------------------------------------- 
     dcb      'dcb' 
---------------------------------------------------------------------- 
    )      end of grouping 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     f      'f' 
---------------------------------------------------------------------- 
     (?:      group, but do not capture: 
---------------------------------------------------------------------- 
     ghi      'ghi' 
---------------------------------------------------------------------- 
     |      OR 
---------------------------------------------------------------------- 
     edc      'edc' 
---------------------------------------------------------------------- 
    )      end of grouping 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     g      'g' 
---------------------------------------------------------------------- 
     (?:      group, but do not capture: 
---------------------------------------------------------------------- 
     hij      'hij' 
---------------------------------------------------------------------- 
     |      OR 
---------------------------------------------------------------------- 
     fed      'fed' 
---------------------------------------------------------------------- 
    )      end of grouping 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     h      'h' 
---------------------------------------------------------------------- 
     (?:      group, but do not capture: 
---------------------------------------------------------------------- 
     ijk      'ijk' 
---------------------------------------------------------------------- 
     |      OR 
---------------------------------------------------------------------- 
     gfe      'gfe' 
---------------------------------------------------------------------- 
    )      end of grouping 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     i      'i' 
---------------------------------------------------------------------- 
     (?:      group, but do not capture: 
---------------------------------------------------------------------- 
     jkl      'jkl' 
---------------------------------------------------------------------- 
     |      OR 
---------------------------------------------------------------------- 
     hgf      'hgf' 
---------------------------------------------------------------------- 
    )      end of grouping 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     j      'j' 
---------------------------------------------------------------------- 
     (?:      group, but do not capture: 
---------------------------------------------------------------------- 
     klm      'klm' 
---------------------------------------------------------------------- 
     |      OR 
---------------------------------------------------------------------- 
     ihg      'ihg' 
---------------------------------------------------------------------- 
    )      end of grouping 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     k      'k' 
---------------------------------------------------------------------- 
     (?:      group, but do not capture: 
---------------------------------------------------------------------- 
     lmn      'lmn' 
---------------------------------------------------------------------- 
     |      OR 
---------------------------------------------------------------------- 
     jih      'jih' 
---------------------------------------------------------------------- 
    )      end of grouping 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     l      'l' 
---------------------------------------------------------------------- 
     (?:      group, but do not capture: 
---------------------------------------------------------------------- 
     mno      'mno' 
---------------------------------------------------------------------- 
     |      OR 
---------------------------------------------------------------------- 
     kji      'kji' 
---------------------------------------------------------------------- 
    )      end of grouping 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     m      'm' 
---------------------------------------------------------------------- 
     (?:      group, but do not capture: 
---------------------------------------------------------------------- 
     nop      'nop' 
---------------------------------------------------------------------- 
     |      OR 
---------------------------------------------------------------------- 
     lkj      'lkj' 
---------------------------------------------------------------------- 
    )      end of grouping 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     nmlk      'nmlk' 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     onml      'onml' 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     ponm      'ponm' 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     rstu      'rstu' 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     stuv      'stuv' 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     tuvw      'tuvw' 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     u      'u' 
---------------------------------------------------------------------- 
     (?:      group, but do not capture: 
---------------------------------------------------------------------- 
     vwx      'vwx' 
---------------------------------------------------------------------- 
     |      OR 
---------------------------------------------------------------------- 
     tsr      'tsr' 
---------------------------------------------------------------------- 
    )      end of grouping 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     v      'v' 
---------------------------------------------------------------------- 
     (?:      group, but do not capture: 
---------------------------------------------------------------------- 
     wxy      'wxy' 
---------------------------------------------------------------------- 
     |      OR 
---------------------------------------------------------------------- 
     uts      'uts' 
---------------------------------------------------------------------- 
    )      end of grouping 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     w      'w' 
---------------------------------------------------------------------- 
     (?:      group, but do not capture: 
---------------------------------------------------------------------- 
     vut      'vut' 
---------------------------------------------------------------------- 
    )      end of grouping 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     xwvu      'xwvu' 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     yxwv      'yxwv' 
---------------------------------------------------------------------- 
    )      end of grouping 
---------------------------------------------------------------------- 
)      end of look-ahead 
---------------------------------------------------------------------- 
    [a-pr-y0-9]{8}   any character of: 'a' to 'p', 'r' to 'y', 
          '0' to '9' (8 times) 
---------------------------------------------------------------------- 
    $      before an optional \n, and the end of a 
          "line" 
---------------------------------------------------------------------- 
Смежные вопросы