Ragazzi sono alla disperata ricerca di una regular expression per validare delle stringhe.
Le stringhe devono essere composta da lettere minuscole (almeno 1) e maiuscole (almeno 1),
da numeri (almeno 1) e opzionalmente dai seguenti caratteri speciali @!#$%

girando per la rete ho trovato questa:
((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{6,20})

che va quasi bene se non per il fatto che i caratteri speciali sono obbligatori.

Cioè la regexp deve accettare le stringhe:

Qwerty1!
qWerty1!
1qWeRtY

ma non stringhe del tipo
Qwerty1+
Qwerty1-

Qualcuno mi sa aiutare?

Grazie in anticipo a tutti