Вы можете попробовать такой шаблон ^(?!.*[oOiI])(?!.*\d{9,})[a-zA-Z0-9]{12}$
Объяснение:
^
- совпадение начала строки
(?!.*[oOiI])
- отрицательный взгляд: утверждайте, что в в строке нет ни одного из символов: oOiI
(?!.*\d{9,})
- отрицательный прогноз: утверждать, что в строке нет 9 или более последовательных цифр
[a-zA-Z0-9]{12}
- совпадение 12 букв c символов
$
- совпадение конца строки
Демо