Как насчет сделать это вместо этого?
(?:[a-zA-Z0-9]{6})?(317866?)
Или, если вы знаете, что более длинная версия всегда начинается с буквы, вы можете использовать это:
(?:[a-zA-Z][a-zA-Z0-9]{5})?(317866?)
Сначала он попытается сопоставить 6 буквенно-цифровых символов, а затем 31786 или 317866, а в случае неудачи вернется и попытается сопоставить 31786 или 317866.