Еще не читал ваши решения, по этому сначала выставлю свой вариант решения, затем прочту как вы решали это все. Сначала создал функцию разбивающую строку на массив (который получал каждый символ как отдельный элемент), затем создал новый массив. С помощью for and if прогнал каждый элемент массива и если условия соблюдались элемент вставлялся в новый массив. Затем Преобразовал новый массив в строку и методом trim() убрал пробелы. Когда возвращал сроку переопределил ее тип на численный с десятичными (parseFloat) и вывел результат. Все работает, горжусь собой =)
Код:
export const extractNumber = (s) => {
let oldMass = s.split('');
let newMass = [];
for (let i = 0; i < oldMass.length; i++) {
if ((oldMass >= 0) || (oldMass === '.')) {
newMass.push(oldMass);
}
}
let numbers = newMass.join('');
numbers.trim();
return parseFloat(numbers);
};