Я б відповів на Пітера Мортенсена, але мені не вистачає репутації.
Його вирази ідеально підходять для кожної із зазначених мінімальних вимог. Проблема з його виразами, які не потребують спеціальних символів, полягає в тому, що вони також НЕ ДОБАВЛЯють спеціальних символів, тому вони також застосовують максимальні вимоги, які я не вважаю, що ОП вимагали. Зазвичай ви хочете дозволити своїм користувачам зробити свій пароль настільки сильним, наскільки вони хочуть; навіщо обмежувати надійні паролі?
Отже, вираз "мінімум вісім символів, принаймні одна літера та одне число":
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$
досягає мінімальної вимоги, але решта символів можуть бути лише літерою та цифрами. Щоб дозволити (але не вимагати) спеціальних символів, слід використовувати щось на кшталт:
^(?=.*[A-Za-z])(?=.*\d).{8,}$
щоб дозволити будь-які символи
або
^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d$@$!%*#?&]{8,}$
щоб дозволити конкретні спеціальні символи
Так само "мінімум вісім символів, принаймні одна велика літера, одна мала літера та одне число:"
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[a-zA-Z\d]{8,}$
відповідає цій мінімальній вимозі, але дозволяє лише літери та цифри. Використання:
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$
щоб дозволити будь-які символи
або
^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)[A-Za-z\d$@$!%*?&]{8,}
щоб дозволити конкретні спеціальні символи.