Регулярное выражение для получения номеров ценового диапазона из строки URL

#jquery #regex

#jquery #регулярное выражение

Вопрос:

Я хочу получать только цифры из URL-адреса ценового диапазона без использования «между» или «и» в regex pathern.

 baseurl/phones/price/between-18-and-4353/page-1/c
  

мне нужно 18 и 4353

Регулярное выражение здесь

Комментарии:

1. regex101.com/r/uholKw/6 попробуйте это, вы получите свои номера в группах 1 и Group2, используя $ 1 и $ 2

Ответ №1:

Вы можете использовать это регулярное выражение и получить свои цифры из group1 и group2,

 bpricebD*(d )D*(d )
  

Здесь bpriceb совпадает price как полное совпадение и D* соответствует нулю или более нецифровых символов, затем (d ) фиксирует одну или несколько цифр в group1, а затем снова D* разрешает сопоставление нуля или более нецифровых символов и, наконец, (d ) фиксирует второе число в group2

Демонстрация регулярного выражения

Ответ №2:

Регулярное выражение — /between[-](d )-and-(d )/

Просто разделите обе цены на группы, и вы получите их в Group1 и Group2.

Объяснение регулярного выражения здесь

 var str = "baseurl/phones/price/between-18-and-4353/page-1/c";
var pattern = /between[-](d )-and-(d )/;
var match = str.match(pattern);
var lowPrice = Number(match[1]);
var highPrice = Number(match[2]);
console.log(lowPrice, highPrice);  

Комментарии:

1. я не хочу использовать «между» и «и». потому что это множественный язык, между ними будут изменения. но в любом случае для вашего пациента. 😀

2. baseurl/phones/price останется ли этот бит неизменным?

Ответ №3:

Я бы пошел другим путем (вообще не нужно регулярное выражение):

 var range = 'baseurl/phones/price/between-18-and-4353/page-1/c';
range = range.substr( range.indexOf('price/between-') ).split('-and-');
range[0] = parseInt( range[0].substr( 1   range[0].indexOf('-') ) );
range[1] = parseInt( range[1] );

console.log( range[0], range[1] );