Ho trovato la soluzione:
^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).*$|^.*(?=.{8,})(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).*$|^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).*$|^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[^a-zA-Z0-9]).*$|^.*(?=.{8,})(?=.*\d)(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).*$

Unpo lunghetta ma soddisfa pienamente le richieste !Al massimo non controlla la stringa vuota,ma per quello basta un'altro validatore per la presenza di stringa!
Comunque grazie lo stesso!