Может быть, это?
(?=[a-z]*\d?[a-z]*\d?)
(?![a-z]*\d[a-z]*\d[a-z]*\d)
(?=\d*[a-z]?\d*[a-z]?\d*[a-z]?\d*[a-z]?)
(?!\d*[a-z]\d*[a-z]\d*[a-z]\d*[a-z]\d*[a-z])
[\da-z]{2,6}
Работает, убедившись, что выделение имеет ноль, одну или две цифры (первый взгляд), но не более двух (второй взгляд). Точно так же это проверяет от нуля до четырех букв (третий взгляд), но не больше, чем четыре (четвертый взгляд). Пятая строка соответствует одному-шести символам.
Если вы хотите сопоставлять только слова, оберните его в \b
.
РЕДАКТИРОВАТЬ: Теперь вы добавили требование, чтобы длина совпадения составляла шесть символов. Требуется лишь небольшая модификация:
(?=[a-z]*\d[a-z]*\d)
(?![a-z]*\d[a-z]*\d[a-z]*\d)
(?=\d*[a-z]\d*[a-z]\d*[a-z]\d*[a-z])
(?!\d*[a-z]\d*[a-z]\d*[a-z]\d*[a-z]\d*[a-z])
[\da-z]{6}