我正在尝试编写一个正则表达式来从URL中获取特定值。
index.php?filter=3f-size[15],1f-colors[1],price[500,2000]&order=ASC
我想从网址获取价格值。我需要得到的是:500,2000
我尝试过的事情:
$.urlParam = function(name){
var results = new RegExp('[\?&]' + name + '/\[(.*?)\]/g').exec(window.location.href);
if (results==null){
return null;
}
else{
return results[1] || 0;
}
}
var checkedPrice = $.urlParam('price');
alert(checkedPrice);
答案 0 :(得分:1)
>var results = /^.*price\[([\d,]+)\].*$/.exec("index.php?filter=3f-size[15],1f-colors[1],price[500,2000]&order=ASC")
>console.log(results[1])
500,2000
>console.log(results[1].replace(new RegExp(",", "g"), ""))
5002000
答案 1 :(得分:0)
你可以使用
\s*\[\d+(?:\s*,\s*\d+)*]
参见regex demo。
详情:
\s*
- 零个或多个空白字符\[
- [
字符\d+
- 一位或多位数字(?:\s*,\s*\d+)*
- 零个或多个重复的逗号,用零个或多个空格字符括起来,然后是一个或多个数字]
- 一个 ]
字符。查看 JavaScript 演示:
const text = 'index.php?filter=3f-size[15],1f-colors[1],price[500,2000]&order=ASC\nText [15, 156, 45789], some price[500, 2000]';
console.log( text.replace(/\s*\[\d+(?:\s*,\s*\d+)*]/g, '') );