2017-01-26 4 views
-1

Я наткнулся на это регулярное выражение используется для проверки пароля:Использование в регулярное выражение для проверки пароля

(?=.*[a-z])(?=.*[A-Z])(?=.*[\d])(?=.*[^a-zA-Z\d])(?=\S+$).{8,} 

Есть только две вещи, которые неясны мне об этом регулярное выражение:

  1. Что такое .* и для чего это регулярное выражение не работает без них?

  2. какая разница/польза или с использованием [\d] вместо \d, поскольку регулярное выражение прекрасно работает в обоих случаях

+0

Посмотрите на колонку с правой стороны этой страницы, он сообщает вам все: https://regex101.com/r/WZ0K1c/1 –

ответ

1
  1. .* любую последовательность символов; . соответствует любому символу (кроме символа новой строки, который здесь не имеет значения) и * соответствует нулевому или более предыдущему шаблону. Это используется в lookaheads для поиска совпадений в любом месте пароля. Если у вас его нет, тогда потребуется, чтобы у вас были эти типы символов в определенном порядке: строчная буква, за которой следует заглавная буква, за которой следует цифра. С .* это означает, что пароль должен содержать хотя бы один из них, но они могут быть в любом месте пароля.

  2. Нет никакой разницы между \d и [\d]. Тот, кто пишет это, может просто использовать скобки по привычке или, возможно, упростить его, чтобы поместить других символов в класс символов.

 Смежные вопросы

  • Нет связанных вопросов^_^