2013-02-28 3 views
0

Я хочу, чтобы обеспечить соблюдение надежного пароля со следующими правилами:
- одна строчных обугленный
- одна прописных обугленным
- один номер
- один специального символ
Regex помощи пароля

поиск в интернет, я пришел с этим:

^(?=.*[a-z])(?=.*[A-Z])(?=.*[[email protected]#$&*])(?=.*[1-9])[a-zA-Z1-9]{8,}$

но не выдерживает в rubular.com Некоторая помощь?

+2

Лично я бы запускал 4 простых теста, проще и так вы можете запросить у пользователя то, что не так с их выбором. –

+0

Кроме того, я думаю, что, например, * «Это замечательный фрейм-код passphrase» * более безопасен и легче запоминается, чем, например, * «FooBar7 @» *. –

ответ

4

Попробуйте это:

^(?=.*[a-z])(?=.*[A-Z])(?=.*[[email protected]#$&*])(?=.*[0-9]).{8,}$ 

Объяснение:

(?=.*[a-z]) пароль должен содержать строчную букву где-то.

(?=.*[A-Z]) пароль должен содержать прописную букву где-нибудь.

(?=.*[[email protected]#$&*]) пароль должен содержать символ где-то.

(?=.*[0-9]) пароль должен содержать цифру где-то.

Все они выглядят впереди, что означает каждый тест на что-то, не включив его в игру, или перемещая позицию спички вперед. Таким образом, после всех этих тестов мы все еще находимся в начале строки в отношении соответствия.

.{8,} весь пароль должен содержать 8 или более символов. (^ и $ привязка к началу и концу строки, поэтому они гарантируют, что совпадение охватывает всю строку).

Проблема с оригиналом была [a-zA-Z1-9]{8,}. Эта часть означала, что весь пароль должен состоять из восьми или более букв и цифр. Это противоречило более раннему требованию присутствия особого персонажа. Кроме того, оригинал не считал ноль числом, которое я считал довольно глупым.

+0

thats удивительный информация. Спасибо. примет ответ за 4 минуты. :) – amit

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