Текст для обработки
1) от 1100 руб. / ч
2) до 1900 руб. / 45 мин.
3) от 1200 до 1900 руб. / 90 мин.
Результат поиска, точка с запятой разделяет разные группы результатов:
1) от; 1100; ч
2) до; 1900; 45
3) 1200; 1900; 90
Моя регулярка почему-то работает не правильно:
((от|до)?. (\d{4})){1,2}.+(ч| d{2} )
Это вообще можно сделать одним регулярным выражением?
JavaScript
Подскажите регулярное выражение. В каждом случае нужно выбрать стоимость или диапазон стоимости и время
Зачем захватывать слова "от" и "до", когда можно по индексу результата понять где какое значение? (0 - от, 1 - до, 2 - время). Вряд ли будет строка вида "до ...от .../ ...".
/(\d*)(?: ?до| руб\.) (\d*)(?: руб\. )?\/ (ч|\d+)/gi
/(\d*)(?: ?до| руб\.) (\d*)(?: руб\. )?\/ (ч|\d+)/gi
Адильжан Ибраев
спасибо) классная идея!
Так
"от 1100 руб. / ч"
.match(/(от (?!.*до) |^до) |\d{4}|(\d{2}|ч) /g).join(';');
"до 1900 руб. / 45 мин."
.match(/(от (?!.*до) |^до) |\d{4}|(\d{2}|ч) /g).join(';');
"от 1200 до 1900 руб. / 90 мин."
.match(/(от (?!.*до) |^до) |\d{4}|(\d{2}|ч) /g).join(';');
⚤
"от 1100 руб. / ч"
.match(/(от (?!.*до) |^до) |\d{4}|(\d{2}|ч) /g).join(';');
"до 1900 руб. / 45 мин."
.match(/(от (?!.*до) |^до) |\d{4}|(\d{2}|ч) /g).join(';');
"от 1200 до 1900 руб. / 90 мин."
.match(/(от (?!.*до) |^до) |\d{4}|(\d{2}|ч) /g).join(';');
⚤
< div id='result_1'>< /div>
< div id='result_2'>< /div>
< div id='result_3'>< /div>
< script>
var regexp = /(?:от\s*([\d]+)\s*до\s*([\d]+)\s*руб\.\s*|(от|до) \s*([\d]+)\s*руб\.\s*)\/\s*(ч|\d+)/i;
var text_1 = 'от 1100 руб. / ч';
var text_2 = 'до 1900 руб. / 45 мин.';
var text_3 = 'от 1200 до 1800 руб. / 90 мин.';
var arr_1 = regexp.exec(text_1);
var arr_2 = regexp.exec(text_2);
var arr_3 = regexp.exec(text_3);
document.getElementById('result_1').innerHTML = arr_1[3] === undefined? arr_1[1] + '; ' + arr_1[2] + '; ' + arr_1[5] : arr_1[3] + '; ' + arr_1[4] + '; ' + arr_1[5];
document.getElementById('result_2').innerHTML = arr_2[3] === undefined? arr_2[1] + '; ' + arr_2[2] + '; ' + arr_2[5] : arr_2[3] + '; ' + arr_2[4] + '; ' + arr_2[5];
document.getElementById('result_3').innerHTML = arr_3[3] === undefined? arr_3[1] + '; ' + arr_3[2] + '; ' + arr_3[5] : arr_3[3] + '; ' + arr_3[4] + '; ' + arr_3[5];
< /script>
###############################
Убирай пробелы в тэгах "< " -> "<"
< div id='result_2'>< /div>
< div id='result_3'>< /div>
< script>
var regexp = /(?:от\s*([\d]+)\s*до\s*([\d]+)\s*руб\.\s*|(от|до) \s*([\d]+)\s*руб\.\s*)\/\s*(ч|\d+)/i;
var text_1 = 'от 1100 руб. / ч';
var text_2 = 'до 1900 руб. / 45 мин.';
var text_3 = 'от 1200 до 1800 руб. / 90 мин.';
var arr_1 = regexp.exec(text_1);
var arr_2 = regexp.exec(text_2);
var arr_3 = regexp.exec(text_3);
document.getElementById('result_1').innerHTML = arr_1[3] === undefined? arr_1[1] + '; ' + arr_1[2] + '; ' + arr_1[5] : arr_1[3] + '; ' + arr_1[4] + '; ' + arr_1[5];
document.getElementById('result_2').innerHTML = arr_2[3] === undefined? arr_2[1] + '; ' + arr_2[2] + '; ' + arr_2[5] : arr_2[3] + '; ' + arr_2[4] + '; ' + arr_2[5];
document.getElementById('result_3').innerHTML = arr_3[3] === undefined? arr_3[1] + '; ' + arr_3[2] + '; ' + arr_3[5] : arr_3[3] + '; ' + arr_3[4] + '; ' + arr_3[5];
< /script>
###############################
Убирай пробелы в тэгах "< " -> "<"
Похожие вопросы
- Когда лучше использовать регулярные выражения в Javascript, а когда не стоит?
- Нужно ли ставить точку с запятой после каждого выражения в JavaScript?
- Почему именно эта формула взята для random числа из диапазона ?
- Заполнение массива случайными простыми числами в диапазоне от 2 до n
- Объясните пошагово, как работает это выражение
- Какой фреймворк выбрать ?
- Какую платформу для изучение программирования лучше выбрать?
- За сколько времени возможно выучить язык JavaScript? И что нужно знать для его изучения. С самого начала.
- Не могу понять выражение Упростите на JS условие if(i-- && xx + yy <= 4 ), когда все переменные- числа!
- Чему равно значение выражения - "0 || 1 && 2 || 3" ?