Вы можете достаточно легко выполнить каждое из отдельных требований (например, минимум 8 символов: .{8,}
будет соответствовать 8 или более символам).
Чтобы объединить их, вы можете использовать «положительный взгляд», чтобы применить несколько подвыражений к одному и тому же контенту. Что-то вроде (?=.*\d.*).{8,}
для сопоставления одной (или нескольких) цифр с предвкушением и 8 или более символов.
Итак:
(?=.*\d.*)(?=.*[a-zA-Z].*)(?=.*[!#\$%&\?].*).{8,}
Запоминание метасимволов.