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

Osc*_*Ryz 46 javascript regex url

这应该很简单(当你知道答案时).从这个问题

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

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

我有:

http://www.youtube.com/watch?v=Ahg6qcgoay4
Run Code Online (Sandbox Code Playgroud)

我需要:

Ahg6qcgoay4
Run Code Online (Sandbox Code Playgroud)

我试过了:

http://www.youtube.com/watch\\?v=(w{11})
Run Code Online (Sandbox Code Playgroud)

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

Cre*_*esh 64

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

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

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

编辑:修复了汤加的正则表达式.

  • 如果匹配失败,也应该进行测试,例如var m = url.match(regex); id =(m && m.length> 1)?m [1]:null; (3认同)
  • 不知道如何编辑答案,但上述答案不正确,因为它的视频ID包含 - 破折号字符失败.因此正则表达式应该是:/http\:\///www.houtout\logo\/ watch \?v =([\\ w-] {11})/ (3认同)

moh*_*297 17

为什么不拿弦并分开它

网址上的示例

var url = "http://www.youtube.com/watch?p=DB852818BF378DAC&v=1q-k-uN73Gk"
Run Code Online (Sandbox Code Playgroud)

你可以做分裂

var params = url.split("?")[1].split("&");
Run Code Online (Sandbox Code Playgroud)

您将获得带有params的字符串数组作为名称值对,并使用"="作为分隔符.


Ion*_*rel 6

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

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

HttpUtility.ParseQueryString(url)["v"];
Run Code Online (Sandbox Code Playgroud)

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


Rob*_*her 5

没有测试,但这应该工作:

/\?v=([a-z0-9\-]+)\&?/i
Run Code Online (Sandbox Code Playgroud)