Кажется, здесь много путаницы. Ответы, которые я вижу до сих пор, неправильно применяют правило 1+ число / 1 + строчные / 1 + прописные, то есть такие пароли, как abc123 , 123XYZ или AB * & ^ # все равно будет принято. Недопустимо предотвращать использование строчных букв, заглавных букв или цифр; Вы должны обеспечить присутствие хотя бы одного из них.
Попробуйте следующее:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,15}$
Если вам также требуется хотя бы один специальный символ (что, вероятно, является хорошей идеей), попробуйте следующее:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[^\da-zA-Z]).{8,15}$
.{8,15}
можно сделать более строгим, если вы хотите (например, вы можете изменить его на \S{8,15}
, чтобы запретить пробелы), но помните, что это снизит надежность вашей схемы паролей.
Я протестировал этот шаблон и он работает, как и ожидалось. Проверено на ReFiddle здесь: http://refiddle.com/110
Редактировать: Одна небольшая заметка, самый простой способ сделать это - 3 отдельных регулярных выражения и свойство Length
строки. Это также легче читать и поддерживать, так что делайте это так, если у вас есть возможность. Если это для правил проверки в разметке, вы, вероятно, застряли с одним регулярным выражением.