шарите ли вы в регекспах
Date: 09/21/07
(Code WTF) Keywords: java
Задача в нашем проекте: проверить пароль на наличие
1. Хотя бы одной большой буквы.
2. Хотя бы одной цифры.
Ввожу ALEX1234 - не пускает. Смотрю JavaScript-проверку, вижу
pattern: /([a-z]+.*[A-Z]+.*\d+)|([a-z]+.*\d+.*[A-Z]+)|([A-Z]+.*[a-z]+.*\d+)|([A-Z]+.*\d+.*[a-z]+)|(\d+.*[A-Z]+.*[a-z]+)|(\d+.*[a-z]+.*[A-Z]+)/
На мой вопрос, дескать а где хоть какой-то комментарий, был получен ответ: кто шарит в регекспах - разберется.
Попросил объяснить на пальцах. Оказалось, что сий код проверяет 6 возможных вариантов ( 3! = 6):
- сначала маленькие, потом большие, потом цифры
- сначала маленькие, потом цифры, потом большие
- ...
На вопрос, что делать, если нужно будет добавить проверку на хотя бы один спец. символ - тогда делать 4! = 24 проверки??
Короче, в итоге было заменено на двойную проверку
pattern: /([A-Z]+)/
pattern: /(\d+)/
Source: http://community.livejournal.com/code_wtf/104387.html