Я думаю, что это возможно только с предварительным утверждением:
^(?=[a-zA-Z\d]{20,24}$)[a-zA-Z]*\d[a-zA-Z]*\d[a-zA-Z\d]*$
Предварительное утверждение ((?=[a-zA-Z\d]{20,24}$)
) проверяет, имеет ли строка ожидаемую форму (20–24 буквенно-цифровых символов). А вторая часть ([a-zA-Z]*\d[a-zA-Z]*\d[a-zA-Z\d]*
) проверяет, содержит ли она хотя бы две цифры.