我只想从价格范围URL中获取数字,而不必在正则表达式路径中使用“介于”或“与”。
baseurl/phones/price/between-18-and-4353/page-1/c
我需要18和4353
答案 0 :(得分:1)
您可以使用此正则表达式从group1和group2中获取数字,
\bprice\b\D*(\d+)\D*(\d+)
在这里,\bprice\b
与price
完全匹配,而\D*
与零个或多个非数字字符匹配,然后(\d+)
捕获了group1中的一个或多个数字,然后再次捕获\D*
允许匹配零个或多个非数字字符,最后(\d+)
捕获组2中的第二个数字
答案 1 :(得分:0)
正则表达式-/between[-](\d+)-and-(\d+)/
只需将价格同时捕获到组中,您就可以将它们分为组1和组2。
正则表达式说明here
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);
答案 2 :(得分:0)
我会走另一条路(根本不需要正则表达式):
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] );