1

正则表达式大师,听从我的号召!

这可能非常简单,但我已经把自己画在了一个心理角落。

取一个常规 URL,在 . 之后拆分?,这给出了一个字符串,就像variable=val&interesting=something&notinteresting=somethingelse我想提取interesting.

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

  • 字符串开头或“&”字符
  • 其次是“有趣=”
  • 后跟我要捕获的字符串
  • 后跟另一个“&”或字符串结尾

我尝试了一些类似的东西, [\^&]interesting=(.*)[&$] 但我什么也没得到......

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

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

4

3 回答 3

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]
于 2013-03-19T11:02:01.273 回答
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
于 2013-03-19T11:18:30.410 回答
0

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

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

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

于 2013-03-19T18:24:39.340 回答