(?=.*\d)(?=.*[A-Za-z]).{8,}
Первая часть ((?=.*\d)
) ищет хотя бы одно число, вторая часть ((?=.*[A-Za-z])
) ищет хотя бы одну букву, а последняя часть (.{8,}
) гарантирует, что по крайней мере 8длина символов.
Возможно, вы захотите установить верхний предел длины пароля следующим образом:
^(?=.*\d)(?=.*[A-Za-z]).{8,30}$
30 в этом месте ограничивает его длиной до 30 символов, а^ и $ привязывают его к началу и концу строки.