Я согласен с @Russell, функция является лучшим выбором для проверки пароля.И трудно представить, чтобы один Regex обрабатывал все эти случаи.Я думаю, вам придется проверять каждый из них по очереди.
По отдельности выражения Regex:
.{8}
соответствует не менее 8 символов [a-z]
соответствует одному символу в нижнем регистре [A-Z]
соответствует одному символу в верхнем регистре [0-9]
соответствует цифре
Сказано, что это будет толькополезно для проверки на стороне клиента перед тем, как сервер выполнит углубленную проверку.