Возможно, одним из вариантов может быть использование замена и использование функции обратного вызова.
Сначала замените все не точки, цифры и дефисы /[^\d.-]
пустой строкой.
Затем сопоставьте необязательный дефис, 1+ цифры и точку в группе 1. В группе 2 сопоставьте 0+ раз любому символу, кроме новой строки.
(-?\d+\.)(.*)
Regex demo
В обратном вызове вернуть объединение групп 1 и 2, где в группе 2 все нецифровые символы заменяются пустой строкой.
let strings = [
"1.a4",
"44.44.4",
"qweqwe55.3",
"44.44.4.4.3333.5",
"-44.44.4.4.3333.5",
"-44.44.4.4.3333.5-",
"1.1",
"1.00",
"1.23",
"23123981239.2",
"2",
"-1",
].map(str => {
return str
.replace(/[^\d.-]+/, '')
.replace(/(-?\d+\.)(.*)/, function(m, g1, g2) {
return g1 + g2.replace(/\D+/g, '');
});
});
console.log(strings)