Проверка пароля регулярное выражение - PullRequest
8 голосов
/ 21 февраля 2011

Я пытаюсь получить одно регулярное выражение, которое выполняет следующее:

  1. обеспечивает отсутствие пробелов
  2. минимальная длина 8
  3. удостоверяется, что есть хотя бы:
    • один не-буквенный символ
    • один заглавный символ
    • один символ нижнего регистра

Я нашел это регулярное выражение:

((?=.*[^a-zA-Z])(?=.*[a-z])(?=.*[A-Z])(?!\s).{8,})

, который учитывает пункты 2 и 3 выше, но как мне добавить первое требование к приведенному выше выражению регулярного выражения?

Я знаю, что могу сделать два выражения, указанное выше, а затем

\s

но я бы хотел, чтобы все это было в одном, я пытался сделать что-то вроде ?!\s, но я не мог заставить его работать. Есть идеи?

Ответы [ 2 ]

17 голосов
/ 21 февраля 2011
^(?=.*[^a-zA-Z])(?=.*[a-z])(?=.*[A-Z])\S{8,}$

должен сделать.Имейте в виду, что вы проверяете только буквы ASCII.Разве Ä не является буквой для ваших требований?

\S означает «любой символ, кроме пробела», поэтому, используя его вместо точки, и прикрепляя регулярное выражение в начале и конце строки, мы уверены, что строка не содержит пробелов.

Я также удалил ненужные скобки вокруг всего выражения.

7 голосов
/ 21 февраля 2011

Ответ Тима работает хорошо и является хорошим напоминанием о том, что существует множество способов решить ту же проблему с помощью регулярных выражений, но вы были на правильном пути, чтобы найти решение самостоятельно. Если вы изменили (?! \ S) на (?!. * \ S) и добавили в конец якоря ^ и $, это сработало бы.

^((?=.*[^a-zA-Z])(?=.*[a-z])(?=.*[A-Z])(?!.*\s).{8,})$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...