Если вы хотите разрешить совпадающие пробелы, и строка не должна содержать только символы нижнего регистра или разрешать пустую строку:
^(?![a-z ]+$)[A-Za-z0-9 ]*[A-Za-z0-9][A-Za-z0-9 ]*$
Regex demo
Или без просмотра вперед, сопоставьте хотя бы символ верхнего регистра или di git
^[A-Za-z0-9 ]*[A-Z0-9][A-Za-z0-9 ]*$
Regex demo
Edit
Для обновленных данных вы можете использовать отрицательный просмотр вперед (?!.*/[a-z]+/)
, чтобы утверждать, что то, что справа - это не только символы нижнего регистра между косыми чертами.
^/(hunde|kleinanzeigen)/(?!.*/[a-z]+/).*(prp_[a-z0-9_]+_\d+|cat_48_5030.*)\.html$
Regex demo
Или более широкое соответствие:
^/(hunde|kleinanzeigen)/(?!.*/[a-z]+/)\S+\.html$