regex para permitir pelo menos um caractere especial, um maiúsculo, um minúsculo (em qualquer ordem)

Alguém pode me ajudar com um regex para permitir pelo menos um caractere especial, uma maiúscula, uma minúscula.

Isto é o que eu tenho até agora:

 ^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$

mas parece coincidir com os caracteres apenas na ordem "caractere especial", "maiúscula", "minúscula".

Qualquer ajuda é muito apreciada