这应该很简单(当你知道答案时)。来自this question
我想尝试一下发布的解决方案。我的问题是:
如何使用JavaScript正则表达式获取给定URL的参数值?
我有:
http://www.youtube.com/watch?v=Ahg6qcgoay4
我需要:
Ahg6qcgoay4
我试过了:
http://www.youtube.com/watch\\?v=(w{11})
但是:我很糟糕......
答案 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
答案 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中使用单个调用。