¿La clave debe tener 20 caracteres entre números y letras mayúsculas en cualquier orden o primero va un bloque de mayúsculas y luego otro de números?
Si es lo primero, con tu expresión regular bastaría.
Código PHP:
Ver original$patron = "/^[A-Z\d]{20}$/";
$string = "SDFASFDFAD87ASDD4534";
echo !preg_match($patron, $string) ?
"Mal" : "Bien"; //Imprime "Bien"
Saludos