I think you could do it, but it would be a LOOOONNNNG regexp.
Something like (in JavaScript syntax)
Code:
/((?=[A-Z])(?=[a-z])|(?=[A-Z])(?=\d)|(?=[a-z])(?=\d)|....)/
That is, you'd have to include every possible pair of your 4 sets of characters...so 6 possible pairs.
Unless you are dead set on doing this all in a single expresssion, it would be easier to just have an "or" of the 4 possibilities and then capture all the matches and ensure that you have at least 2 matches. Depending on what "outside" language you are using, this would be trivial.
Hmmm???