2014-02-07 2 views
0

Может кто-нибудь любезно объяснить этот шаблон регулярного выражения мне?regex pattern - what is ((? =. * D) | (? =. * W +)) и (?! [. N])

под

(?=^.{8,}$)((?=.*\d)|(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$ 

что именно

((?=.*\d)|(?=.*\W+)) 

&

(?![.\n]) 

спасибо

+0

(? =. * [A-Z]) (? =. * [A-z]) означает a-z в нижнем регистре и в верхнем регистре ... что об остальном? – user2947950

+0

Это смотровые утверждения. См. Здесь: http://www.regular-expressions.info/lookaround.html – MElliott

+0

Вставьте свое регулярное выражение там, и оно вам объяснит: http://regex101.com/ – Vache

ответ

2

Это все взгляды (положительные и отрицательные), которые обеспечивают, чтобы следующий текст соблюдал некоторые правила без фактического захвата текста.

   # assert that 
(?=^.{8,}$) # there are at least 8 characters 
(    # and 
    (?=.*\d)  # there is at least a digit 
    |    # or 
    (?=.*\W+)  # there is one or more "non word" characters (\W is equivalent to [^a-zA-Z0-9_]) 
)    # and 
(?![.\n])  # there is no . or newline and 
(?=.*[A-Z]) # there is at least an upper case letter and 
(?=.*[a-z]).*$ # there is at least a lower case letter 
.*$   # in a string of any characters 

(?! ...) синтаксис для отрицательного предпросмотра (матч, если нет ...), (?= ...) для положительного опережающего просмотра (матч, если есть ...). Это очень похоже на проверку пароля!

2
  1. строка соответствует до конца строки
  2. По крайней мере 8 символов в длину
  3. По крайней мере одна цифра или не символ слова существует (не A-Za-z0-9_)
  4. Никакой новой линии не найдено (т.е. , строка одной строки)
  5. По крайней мере, одна заглавная буква существует
  6. По крайней мере, одна строчная буква существует

Это кажется RegEx для проверки пароля.