Во-первых, способ обеспечения того, чтобы строка содержала, например, две цифры, состоял в том, чтобы использовать положительный прогноз:
(?=.*\d.*\d)
Вы можете обобщить это для других ваших фильтров.
Чтобы убедиться, что строка содержит от 10 до 63 символов:
.{10,63}
Вы говорите, что не хотите, чтобы строка начиналась с u или U, а затем от 3 до 6 цифр (допустимо до 7 цифр), используйтенегативный взгляд:
(?![uU]\d{3,6}\D)
\D
требуется, чтобы убедиться, что если есть седьмая цифра, то строка будет принята.
Собираем все вместе:
r'^(?=.*\d.*\d)(?=.*[a-z].*[a-z])(?=.*[A-Z].*[A-Z])(?![uU]\d{3,6}\D).{10,63}$'