Вход

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


nastya97core
04.04.2020, 20:41
Здравствуйте. Подскажите, как с помощью регулярных выражений получить все слова до определённого?

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

Мне с помощью регулярных выражений нужно получить всё то, что стоит перед первой стоимостью. То есть ориентир должен быть: "(стоимость) руб.". В случае этих строк на выходе:
Консультация по заключению договора
Консультация по статье 18.1
Договор на оказание услуг
Сбор за 14 статью и за 322 определение

Помогите пожалуйста

рони
04.04.2020, 21:08
nastya97core,
<script>
let arr = [
'Консультация по заключению договора 400 руб. Прочие услуги: 200 руб.',
'Консультация по статье 18.1 1245.40 руб. Прочие услуги: 200 руб.',
'Договор на оказание услуг: 654.30 руб.',
'Сбор за 14 статью и за 322 определение 654.30 руб.',
].map(str => str.match(/(.*?)(?=\s+\d+(\.\d+)?\s?руб\.)/)[0]);
document.write(arr.join('<br>'))
</script>

laimas
04.04.2020, 21:18
Можно проще - match(/^\D+/)[0]

PS. Нет, не только же цены .. )

nastya97core
04.04.2020, 21:24
рони,
О! Уже? Спасибо!!!

Подскажите, может вы знаете. Где лучше делать обработку? На сервере (php) или на клиенте? Что быстрее будет?

рони
04.04.2020, 21:27
Что быстрее будет?
лучше на сервере, если нет какого-то хитрого взаимодействия клиента с данными.

laimas
04.04.2020, 22:03
Где лучше делать обработку? На сервере (php) или на клиенте?

На сервере вообще не должно быть таких ситуаций когда нужно потрошить текст, если только этот текст не чужой. На сервере нужно хранить структурированные данные, а не все в куче.