2016-03-08 5 views
-1

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

^[\\p{Alnum}#[email protected]$*&_]{5,12}$ 
  1. По крайней мере 5 символов и не более 12 символов
  2. содержит по крайней мере одну цифру
  3. содержит по меньшей мере один символ
  4. может содержать символы в наборе специальных символов (#. @ $ * & _)
  5. не содержит пробел, табуляция и т.д.

Мне не хватает 1 и 2, как если бы я дал «gjsajhgjhagfj» или «29837846876», он должен потерпеть неудачу. Но этого не происходит.

Не могли бы вы помочь?

+0

Есть ли причина, по которой вы ограничиваете это максимум 12 символами? Мне это не кажется логичным. –

+0

Есть причина, по которой я не могу делиться онлайн –

+0

Не стоит беспокоиться, хорошо, что всегда есть люди, желающие помочь, НЕ УБЕДИТЕСЬ ... Все заслуживают помощи, пока он показывает, что он уже сделал некоторые усилия, и он не смог достичь того, чего он хотел, что вы четко делали <3 – Enissay

ответ

3

Вы можете использовать lookaheads в силу условия 1 & 2:

^(?i)(?=.*[a-z])(?=.*[0-9])[a-z0-9#[email protected]$*&_]{5,12}$ 

DEMO

(?i) для нечувствительной матча, так же, как Pattern.CASE_INSENSITIVE флаг для вашей функции компиляции:

Pattern.compile(regex, Pattern.CASE_INSENSITIVE) 

Вы можете узнать больше о Lookaheads HERE

+0

Отлично! Это сработало –

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