正则括号内的正则表达式逗号分隔值

时间:2016-03-02 02:11:26

标签: regex

我正在尝试编写一个正则表达式来从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);

2 个答案:

答案 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, '') );