Что-то вроде этого должно работать:
const regex = /^(d{2})-?([a-zA-Z]{3})-?(d{6})-?(d{2})-?(d{1,4})$/;
const reformat = str =>
regex.test(str) ? str.replace(regex, '$1-$2-$3-$4-$5') : null;
тесты
const assert = require('assert');
assert.equal(reformat('invalid-format'), null);
assert.equal(reformat('01-XXX-000001-01-0001'), '01-XXX-000001-01-0001');
assert.equal(reformat('01XXX000001010001'), '01-XXX-000001-01-0001');
assert.equal(reformat('01XXX000001011'), '01-XXX-000001-01-1');
assert.equal(reformat('43-XPR-000643-01-0001'), '43-XPR-000643-01-0001');
assert.equal(reformat('43XPR000643010001'), '43-XPR-000643-01-0001');