Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Регулярные выражения (https://javascript.ru/forum/misc/44579-regulyarnye-vyrazheniya.html)

NodeNerd 25.01.2014 00:41

Регулярные выражения
 
Привет!

Простейшая задачка поставила в тупик. Есть строка (одной из свойств объекта) с названием товара и его базовым количеством. Например, "носки вонючие, 1 шт.". Из этой строки надо вытащить только название.
Количество и единица измерения могут быть разными, но зато всегда будет паттерн "запятая пробел число пробел буквы конец", или, выражаясь нормальным языком, /,\s\d+\s\D+$/i

И все прекрасно работает для почти 200 таких строк, вот только следующие три из них под этот паттерн почему-то никак не подходят:
Гребенки д/перепл.машин 6.0 мм, белые, 100 шт
Нитки д/прошивки документов 150 ЛХ , 500 м
Корректирующая жидкость Expert Complete на хим.основе, 20 мл

Есть идеи, в чем может быть проблема?
\0, \n, \f, \r на конце уже проверял, результата нет.

nerv_ 25.01.2014 00:56

alert(/[^\d,]+/.exec('Гребенки д/перепл.машин 6.0 мм, белые, 100 шт'));

NodeNerd 25.01.2014 01:10

Не то(( Отбрасывать надо именно ", 1 шт." и только в самом конце.
То есть, строка "Гребенка, 1 шт. д\машин, 100 шт 6.0мм whatever else , 0 шт, 10 шт, 100 шт" должна превращаться в "Гребенка, 1 шт. д\машин, 100 шт 6.0мм whatever else , 0 шт, 10 шт".

Штука в том, что это последнее ", 1 шт." подставляется серверным кодом стороннего сервиса. Зачем - не знаю, отключить нельзя, а нам очень сильно мешает.

рони 25.01.2014 01:17

NodeNerd,
var str = "Гребенка, 1 шт. д\машин, 100 шт 6.0мм whatever else , 0 шт, 10 шт, 100 шт";
 alert(str.match(/.*(?=,[^,])/))

NodeNerd 25.01.2014 01:26

Бинго! Спасибо!
Теперь все нормально.

nerv_ 25.01.2014 02:19

var str = "Гребенка, 1 шт. д\машин, 100 шт 6.0мм whatever else , 0 шт, 10 шт, 100 шт";
alert(str.slice(0, str.lastIndexOf(',')));


Часовой пояс GMT +3, время: 10:31.