Как извлечь числа из строки
Короткий ответ
match() с флагом g возвращает все совпадения. \d+ — одна или несколько цифр:
const text = 'Order 15 items for 230 dollars';
const numbers = text.match(/\d+/g).map(Number);
console.log(numbers);Результат:
[
15,
230
]Дробные и отрицательные числа
Дополните шаблон необязательным минусом и необязательной дробной частью:
const text = 'Temperature fell from 2.5 to -3.75 degrees';
const numbers = text.match(/-?\d+(\.\d+)?/g).map(Number);
console.log(numbers.join(', '));Результат:
2.5, -3.75Только цифры
Чтобы получить все цифры одной строкой, например из номера телефона, удалите всё остальное:
console.log('+1 (555) 123-45-67'.replace(/\D/g, ''));Результат:
15551234567Частая ошибка
Если чисел нет, match() возвращает null, а не пустой массив. Добавьте запасной вариант:
const numbers = 'no digits here'.match(/\d+/g) ?? [];
console.log(numbers.length);Результат:
0Функции из этого ответа
- String.prototype.match — Ищет совпадения с регулярным выражением.
- String.prototype.replace — Заменяет первое совпадение (или все — с флагом g у регулярного выражения).
- Number() — Превращает значение в число.