Вот регулярное выражение
^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[\-$*.{}?"!@#%&\/\\,><':;|_~`^\]\[\)\(]).{8,}
В настоящее время это гарантирует, что строка содержит по крайней мере 1 верхний регистр, 1 нижний регистр, 1 число и один специальный символ из списка.
Я хочу убедиться, что я не пропускаю пробелы, но не могу найти способ сделать это.