Используйте [0-9a-z]{1,5}
в качестве соответствия части (с опцией g
) и \U\0-
в качестве замены .
\U
(в replace part) заботится о преобразовании в верхний регистр.
\0
копирует весь матч, а -
добавляет минус.
Единственное, что нужно сделатьвпоследствии следует удалить завершающий минус (после последнего совпадения).
Рабочий пример см. https://regex101.com/r/8WXUhd/1
Edit
Я переделал приведенный выше пример в JavaScript-кодрегулярное выражение:
var a = '123abe5r4txx234';
var b = a.replace( /[0-9a-z]{1,5}/g, u => u.toUpperCase() + '-').slice(0, -1);
print(a);
print(b);
Распечатывает (источник и результат):
123abe5r4txx234
123AB-E5R4T-XX234