Expressão regular para validação de senha

Atualmente, uso essa expressão regular para verificar se uma string está de acordo com algumas condiçõe

As condições da string devem ter entre 8 e 15 caracteres. string deve conter pelo menos um número. A string deve conter pelo menos uma letra maiúscula. string deve conter pelo menos uma letra minúscula.

(?!^[0-9]*$)(?!^[a-zA-Z]*$)^([a-zA-Z0-9]{8,15})$

Funciona na maior parte do tempo, mas não permite caracteres especiais. Qualquer ajuda para modificar esse regex para permitir caracteres especiais é muito apreciad

questionAnswers(9)

yourAnswerToTheQuestion