Javascript 使用正则表达式从url提取参数值
这应该非常简单(当你知道答案时)。从 我想尝试一下发布的解决方案。我的问题是: 如何使用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 你差一点就成功了,只需要逃离特殊的正
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中?