Один из вариантов - использовать регулярное выражение с split
или регулярное выражение с .replace
.
[^\d]+
Значит заменить любую комбинацию символов, которые не являются цифрами ([0-9]
)
Это оставит завершающий ":", который вы можете удалить с другой заменой или используя что-то вроде .slice
на сплите.
var input1 = '03 D. 07 H. 10 M.';
var input2 = '05 H. 00 M.';
console.log(input1.replace(/[^\d]+/g, ":").replace(/:$/, ""))
console.log(input1.split(/[^\d]+/).join(":").replace(/:$/, ""))
console.log(input2.replace(/[^\d]+/g, ":").replace(/:$/, ""))
console.log(input2.split(/[^\d]+/).join(":").replace(/:$/, ""))