Задать вопрос
nastya97core
@nastya97core
Начинающий программист

Как получить число перед определённым словом?

Здравствуйте. Есть строки такого вида:
[
'Консультация по заключению договора 400 руб. Прочие услуги: 200 руб.',
'Консультация по статье 18.1 1245.40 руб. Прочие услуги: 200 руб.',
'Договор на оказание услуг: 654.30 руб.',
]


Подскажите, как получить стоимости? В каждой строке есть 1 или 2 стоимости и вот их нужно каждое ловить в переменную price1 и price2 (если второе есть). Я в начале думала ловить просто все числа, но столкнулась с тем, что в строке может быть не только стоимость (как во второй строке). То есть мне нужно получить первое число перед "руб."
  • Вопрос задан
  • 215 просмотров
Подписаться 1 Простой 10 комментариев
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Академия Эдюсон
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Инженер по тестированию
    6 месяцев
    Далее
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Какое регулярное выражение поможет достать числа:

const reg = /\d+(?:\.\d+)?(?= руб\.)/g;

Достаём:

const nums = (str.match(reg) ?? []).map(Number);

// или

const nums = Array.from(str.matchAll(reg), n => +n);

// или

const nums = (function get() {
  const m = reg.exec(str);
  return m ? [ parseFloat(m), ...get() ] : [];
})();

UPD. Вынесено из комментариев:

а это возможно как-то в php использовать?

preg_match_all('/\d+(?:\.\d+)?(?= руб\.)/', $str, $matches);
$nums = array_map('floatval', $matches[0]);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы