const addTimeDescription = (str) =>
str.replace(/\b\d{1,2}:\d{2}\b(?!.*?\b\d{1,2}:\d{2}\b)/, '$& (время местное)');
// пример использования
const originalString = " с 14:01 к 15:00 работать по плановому";
const updatedString = addTimeDescription(originalString); // ' с 14:01 к 15:00 (время местное) работать по плановому'
здесь берем только то совпадение, после которого нет другого совпадения.
самый интересный момент -
".*?" вместо
".*", благодаря этому регулярка на порядки быстрее работает на длинных строках с кучей отметок времени
update: более простая регулярка, на основе жадности:
/^.*\b\d\d?:\d\d\b/