RegEx:从URL中提取GET变量

时间:2013-03-19 10:52:55

标签: javascript regex firefox-addon-sdk

RegExp大师,留意我的电话!

这可能非常简单,但我已经把自己描绘成一个心理角落。

采用常规网址,在?后拆分,这会提供类似variable=val&interesting=something&notinteresting=somethingelse的字符串,我想提取interesting的值。

我感兴趣的变量的名称可以是另一个变量的子串。 所以比赛应该是

  • 字符串的开头或“&”字符
  • 后跟“interesting =”
  • 后跟我想要捕获的字符串
  • 接着是另一个“&”或字符串结尾

我尝试了一些方法 [\^&]interesting=(.*)[&$] 但我一无所获......

更新 这将在每个get请求的Firefox插件中运行,这意味着jQuery不可用,如果可能的话,我想避免因编写函数而导致额外的字符串操作。

对我而言,这感觉就像是一个通用的“正则表达式字符串的提取部分”,但也许我错了(RegEx显然不是我强大的一面)

3 个答案:

答案 0 :(得分:1)

简单的解决方案

var arr = "variable=val&interesting=something&notinteresting=somethingelse".split("&");
for(i in arr) {
var splits = arr[i].split("=");
if(splits[0]=="interesting") alert(splits[1]);
}

也是单线匹配

"variable=val&interesting=something&notinteresting=somethingelse".match(/(?:[&]|^)interesting=((?:[^&]|$)+)/)[1]

答案 1 :(得分:0)

function getValue(query)
{
var obj=location.search.slice(1),
    array=obj.split('&'),
    len=array.length;
    for(var k=0;k<len;k++)
    {
        var elm=array[k].split('=');
        if(elm[0]==query)return elm[1];
    }

}

此函数直接提取查询URL并返回相应的值(如果存在)。

//usage
var get=getValue('interesting');
console.log(get);//something

答案 2 :(得分:0)

如果您使用的是Firefox附加SDK,则可以使用url模块:

https://addons.mozilla.org/en-US/developers/docs/sdk/latest/modules/sdk/url.html

这比使用正则表达式要好得多。