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

Javascript 使用正则表达式从url提取参数值,javascript,regex,url,Javascript,Regex,Url,这应该非常简单(当你知道答案时)。从 我想尝试一下发布的解决方案。我的问题是: 如何使用JavaScript正则表达式获取给定URL的参数值 我有: http://www.youtube.com/watch?v=Ahg6qcgoay4 我需要: Ahg6qcgoay4 我试过: http://www.youtube.com/watch\\?v=(w{11}) 但是:我很烂 未测试,但这应该可以: /\?v=([a-z0-9\-]+)\&?/i 你差一点就成功了,只需要逃离特殊的正

这应该非常简单(当你知道答案时)。从

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

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

我有:

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

Ahg6qcgoay4
我试过:

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

但是:我很烂

未测试,但这应该可以:

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

你差一点就成功了,只需要逃离特殊的正则表达式字符:

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

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

<强>编辑:< ReXEX < /Prime> < /P> < P> V是一个查询参数,从技术上讲,您需要考虑案例AL:

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

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

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

为什么不将字符串拆分

url上的示例

var url = "http://www.youtube.com/watch?p=DB852818BF378DAC&v=1q-k-uN73Gk"
你可以做一个分裂作为

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

您将得到一个字符串数组,其中参数作为名称-值对,分隔符为“=”。

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

\b[\w-]+$
我检查了这两个网址

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

我使用单独的自定义函数来获取所有URL参数和URL部分。 对于URL参数,(这是URI字符串的最后一部分,?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变量组成的数组

对于URL部分或函数,(即urlpart/?x=a&y=b 我使用一个简单的uri拆分

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

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

可能还应该测试匹配是否失败,例如var m=url.match(regex);id=(m&&m.length>1)?m[1]:null;不知道如何编辑答案,但上面的答案不正确,因为它在包含-dash字符的视频ID中失败。因此正则表达式应该是:/http\:\/\/www\.youtube\.com\/watch\?v=([\w-]{11})/签出还有这个问题:@dfa:我以后可能需要它,谢谢你的链接。我想我应该先把这个regexp弄对:)“/v=[0-9A-Za-z]*/”签出javascript模块,该模块将从任何已知的Youtube url格式(包括嵌入字符串)提取Youtube id。它不使用一个单一的正则表达式,但它使用了几个正则表达式来查找不同的模式。一些youtube URL也有一个-,例如…@MyWhriledView为连字符更新,这是一个原创想法,+1,但我建议使用HttpUtility.ParseQueryString,如果你可以使用referencement System.Web.dll,而不是重新发明轮子严格地说,这应该是var playlist=HttpUtility.ParseQueryString(新Uri(url).Query)[“v”];因为ParseQueryString查找的是一个查询字符串,而不是一个完整的url。还有:为什么当OP标记了JS时,这个答案出现在.NET中?