使用正则表达式从url中提取参数值

时间:2009-08-14 22:46:03

标签: javascript regex url

这应该很简单(当你知道答案时)。来自this question

我想尝试一下发布的解决方案。我的问题是:

如何使用JavaScript正则表达式获取给定URL的参数值?

我有:

http://www.youtube.com/watch?v=Ahg6qcgoay4

我需要:

Ahg6qcgoay4

我试过了:

http://www.youtube.com/watch\\?v=(w{11})

但是:我很糟糕......

6 个答案:

答案 0 :(得分:56)

你几乎拥有它,只需要逃避特殊的正则表达式字符:

regex = /http\:\/\/www\.youtube\.com\/watch\?v=([\w-]{11})/;

url = 'http://www.youtube.com/watch?v=Ahg6qcgoay4';
id = url.match(regex)[1]; // id = 'Ahg6qcgoay4'

修改:按soupagain修正正则表达式。

答案 1 :(得分:16)

为什么不接受字符串并将其拆分

网址上的示例

var url = "http://www.youtube.com/watch?p=DB852818BF378DAC&v=1q-k-uN73Gk"

你可以分割为

var params = url.split("?")[1].split("&");

您将获得带有参数的字符串数组作为名称值对,并使用“=”作为分隔符。

答案 2 :(得分:6)

v是一个查询参数,从技术上讲,您需要考虑案例ala:http://www.youtube.com/watch?p=DB852818BF378DAC&v=1q-k-uN73Gk

在.NET中,我建议使用System.Web.HttpUtility.ParseQueryString

HttpUtility.ParseQueryString(url)["v"];

你甚至不需要检查密钥,因为如果密钥不在集合中,它将返回null。

答案 3 :(得分:5)

未经测试,但这应该有效:

/\?v=([a-z0-9\-]+)\&?/i

答案 4 :(得分:2)

我知道问题是旧的并且已经回答了,但这也可以是一个解决方案

\b[\w-]+$

我检查了这两个网址

http://www.youtube.com/watch?v=Ahg6qcgoay4
https://www.youtube.com/watch?v=22hUHCr-Tos

DEMO

答案 5 :(得分:0)

我使用单独的自定义函数来获取所有URL参数和URL部分。 对于URL参数,(这是URI字符串的最后一部分,http://domain.tld/urlpart/ ?x = a& y = b

    function getUrlVars() {
    var vars = {};
    var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
        vars[key] = value;
    });
    return vars;
    }

上面的函数将返回一个由url变量组成的数组。

对于网址部分或功能,(http://domain.tld/ urlpart /?x = a& y = b 我使用简单的uri分割,

function getUrlParams() { 
    var vars = {};
    var parts = window.location.href.split('/' );
    return parts;
}

您甚至可以将它们组合在一起,以便能够在页面或javascript中使用单个调用。