Можно использовать следующее регулярное выражение:
/\A(?:[a-z]{6,10}\d{2}|\d{2}[a-z]{6,10})\z/
Эти строки соответствуют регулярному выражению:
"abcdefgh45"
"45abcdefgh"
Это не так:
"2acdefgh45"
"45abcdefghijk"
"abcdefghijk45"
"abcde45"
Регулярное выражение может сделать самодокументирование, написав его в режиме свободного пробела.
/
\A # match beginning of string
(?: # begin non-capture group
[a-z]{6,10}\d{2} # match 6-10 lc letters followed by 2 digits
| # or
\d{2}[a-z]{6,10} # match 2 digits followed by 6-10 lc letters
) # end non-capture group
\z # match end of string
/x # free-spacing regex definition mode