2010-12-08 2 views
0

Я использую следующее регулярное выражение для своего java-кода.Использование регулярного выражения для проверки пароля

^.*(?=.{6,20})(?=.*[a-z].*[a-z])(?=.*[A-Z])(?=.*[0-9]).*$ 

Когда я пытаюсь использовать то же самое в XML, как

^.\*(\?=.{6,20})(\?=.\*[a-z].\*[a-z])(\?=.\*[A-Z])(\?=.\*[0-9]).\*$ 

Это не работает. Он показывает исключение, как показано ниже.

java.lang.IllegalArgumentException: CVC-шаблон действует: Значение 'narendra1A' не фасет-действительный в отношении шаблона «^ * (\ = {6,20}?.). (\? =. * [az]. * [az]) (\? =. * [AZ]) (\? =. * [0-9]). * $ 'для типа ' #AnonType_passwordcreateUser '.

Может ли кто-нибудь помочь в этом отношении.

Спасибо,

нарендра

+0

Не связанный с вопросом, но вы должны удалить первый `. *` Сразу после `^`. Это необязательно и делает ваше регулярное выражение очень неэффективным. Кроме того, если вы считаете, что ограничиваете длину пароля 6-20 символами, это не так. Строка из 100 символов будет передавать это регулярное выражение просто отлично. – 2010-12-08 11:01:42

+1

Почему существует верхний предел в 20 символов? – Gumbo 2010-12-08 11:02:03

ответ

2

Это не прямо ответить на ваш вопрос, но это может быть лучшим вариантом для вас, чем пытаться сделать качественный пароль проверки с регулярными выражениями.

Библиотека vt-password - отличная библиотека Java, которая реализует проверку качества пароля на основе правил. Помимо подсчета символов/классов символов, он выполняет такие функции, как проверка на словари, проверка на использование ранее используемых паролей, проверка повторяющихся символов и т. Д.

(Если вы используете Spring, довольно просто настроить правило пароля объекты в файле подключения Spring XML. Это позволяет настраивать правила без изменения кода.)

0

Пароль Регулярное выражение Pattern

((?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20}) 

Описание

(   # Start of group 
    (?=.*\d)  # must contains one digit from 0-9 
    (?=.*[a-z]) # must contains one lowercase characters 
    (?=.*[A-Z]) # must contains one uppercase characters 
    (?=.*[@#$%]) # must contains one special symbols in the list "@#$%" 
    .   #  match anything with previous condition checking 
     {6,20} #  length at least 6 characters and maximum of 20 
)   # End of group 
0

Ваш шаблон использует символы, запрещенные в документе XML. Чтобы сделать простой пароль на CDATA.

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