что-то вроде
^(?=.*[0-9])(?=.*[a-zA-Z])\w{8,}$
будет работать
расчлененный:
^
начало строки
(?=.*[0-9])
посмотрите в будущее и убедитесь, что есть хотя бы 1 цифра
(?=.*[a-zA-Z])
посмотрите вперед и убедитесь, что есть хотя бы одна буква
\w{8,}
фактически соответствует 8+ символам
$
конец строки
Редактировать: , если вы хотите, чтобы дополнительные символы (которые не учитываются при требовании 1 буквы), используйте
^(?=.*[0-9])(?=.*[a-zA-Z]).{8,}$
это позволит использовать любой символ, кроме новой строки
Если вы хотите разрешить только определенные символы, замените \w
в первом регулярном выражении на [A-Za-z0-9@#$%^&*]
на ваш выбор символов
^ (?! [0-9] $) (?! [A-Za-Z _] $) \ ш {8} $