Stack Exchange
Обработка строки
  parts = source.split(':')
  normilized_parts = parts.map(function(num) {
    var value = +num;
    if (isNaN(value)) {return source;}
    return value;
  })
  return normilized_parts.join(':');
}

var n_num = normilize(num);

данный код приводит текст вид '01:0001:00004:0003' к '1:1:4:3' как обработать ситуацию когда приходят лишние символы, Вида '01:0001:00004:0003/00'? 

Можно просто делать parseInt, он отбросит все "лишние" символы
const str = '01:0001:00004:0003/00';
const parts = str.split(':');

const parsedParts = parts.map((num) => {
    const value = parseInt(num, 10);
    return isNaN(value) ? undefined : value;
});

const result = parsedParts.join(':');

С таким способом важно чтоб символ не "ломал" значение, ибо "0/3" спарсится в 0, а не в 3. Если набор символов и возможные позиции известны, то их можно просто убирать через slice или replace.

зачем пустую строку вторым параметром передавать в map? зачем .toString() делать?

@Grundy спасибо, исправил. Изначально сделал через reduce, но вышло малочитабельно и когда переделывал упустил эти моменты.
