Um pouco mais simples:
import java.util.regex.*;
class TestePadrao {
public static void main(String[] args) {
// Não recomendaria usar um padrão só, mas os três do Mantu,
// que são mais fáceis de manter.
Pattern pat = Pattern.compile (
//
".*"
+ "("
+ "[A-Z]+.*[a-z]+.*[0-9]+"
+ "|"
+ "[a-z]+.*[A-Z]+.*[0-9]+"
+ "|"
+ "[0-9]+.*[a-z]+.*[A-Z]+"
+ "|"
+ "[a-z]+.*[0-9]+.*[A-Z]+"
+ "|"
+ "[0-9]+.*[A-Z]+.*[a-z]+"
+ "|"
+ "[A-Z]+.*[0-9]+.*[a-z]+"
+ ")"
+ ".*");
String [] fileStr = {
"Marcelo23", // bate
"23Marcelo", // bate
"jaj@asdas33", // não bate
"josé da silva", // não bate
"12 tiradentes 23", // não bate
"12 Tiradentes 23", // bate
};
for (int i = 0; i < fileStr.length; ++i) {
if (pat.matcher (fileStr[i]).matches()) {
System.out.println (fileStr[i]);
}
}
}
}