Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как извлечь числа из строки

Короткий ответ

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() — Превращает значение в число.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.