Регулярные выражения
Привет!
Простейшая задачка поставила в тупик. Есть строка (одной из свойств объекта) с названием товара и его базовым количеством. Например, "носки вонючие, 1 шт.". Из этой строки надо вытащить только название. Количество и единица измерения могут быть разными, но зато всегда будет паттерн "запятая пробел число пробел буквы конец", или, выражаясь нормальным языком, /,\s\d+\s\D+$/i И все прекрасно работает для почти 200 таких строк, вот только следующие три из них под этот паттерн почему-то никак не подходят: Гребенки д/перепл.машин 6.0 мм, белые, 100 шт Нитки д/прошивки документов 150 ЛХ , 500 м Корректирующая жидкость Expert Complete на хим.основе, 20 мл Есть идеи, в чем может быть проблема? \0, \n, \f, \r на конце уже проверял, результата нет. |
alert(/[^\d,]+/.exec('Гребенки д/перепл.машин 6.0 мм, белые, 100 шт')); |
Не то(( Отбрасывать надо именно ", 1 шт." и только в самом конце.
То есть, строка "Гребенка, 1 шт. д\машин, 100 шт 6.0мм whatever else , 0 шт, 10 шт, 100 шт" должна превращаться в "Гребенка, 1 шт. д\машин, 100 шт 6.0мм whatever else , 0 шт, 10 шт". Штука в том, что это последнее ", 1 шт." подставляется серверным кодом стороннего сервиса. Зачем - не знаю, отключить нельзя, а нам очень сильно мешает. |
NodeNerd,
var str = "Гребенка, 1 шт. д\машин, 100 шт 6.0мм whatever else , 0 шт, 10 шт, 100 шт"; alert(str.match(/.*(?=,[^,])/)) |
Бинго! Спасибо!
Теперь все нормально. |
var str = "Гребенка, 1 шт. д\машин, 100 шт 6.0мм whatever else , 0 шт, 10 шт, 100 шт"; alert(str.slice(0, str.lastIndexOf(','))); |
Часовой пояс GMT +3, время: 10:31. |