Подход с использованием грубой силы может заключаться в том, чтобы просто использовать два положительных взгляда:
^(?=.*[A-Za-z].*[A-Za-z])(?=.*\d.*\d.*\d.*\d).{6}$
Это будет соответствовать ровно двум буквам, строчным или прописным, и четырем цифрам, в общей сложности шесть символов.
Демо
Для более глубокого объяснения рассмотрим первый взгляд:
^(?=.*[A-Za-z].*[A-Za-z])
Это говорит о утверждении (но не совпадает) с начала строки, что две буквы встречаются в любом месте строки.Если предположить, что это так, то механизм регулярных выражений оценит следующий запрос, который проверяет четыре числа.Если это также верно, то все, что нужно, это сопоставить любые 6 символов.Эти совпадающие символы должны состоять только из букв и цифр из-за подозрительных взглядов.