вариант 1: "сверхжадный поиск" - набиваем цифры в копилку, берем результат и добавляем проверку, что далее нет буквы. Здесь фишка в том, что нет бэктрекинга, цепочка цифр будет откатываться. На JS нет специального синтаксиса для "сверхжадности", но возможно в твоем языке есть.
(?=(\d+))\1(?![a-z])
вариант 2: проверка, что за цифрами не идут "цифры и далее буква"
(\d+)(?!\d*[a-z])
Навскидку, первый вариант выглядит быстрее, ибо там линейная сложность, а во втором как будто квадратичная (хотя нельзя сказать наверняка: может, механизм как-то догадается не делать влоб)