正则表达式从YouTube网址返回开始时间(#t =)

时间:2013-04-17 02:34:07

标签: javascript regex string

我正在寻找一种可以获得其中任何一种URL的方式:

http://www.youtube.com/watch?v=Nlwa0ZWrO8g#t=1m30s?someweirdthing
http://www.youtube.com/watch?v=Nlwa0ZWrO8g#t=90s&anotherweirdthing
http://www.youtube.com/watch?v=Nlwa0ZWrO8g#t=90

返回如下值:

1m30s
90s
90

单个正则表达式可以实现吗?

2 个答案:

答案 0 :(得分:3)

youtube.com\S+#t=((\d+m)?(\d+[s]?)?)

找到捕获组1的值,它将返回

1m30s
90s
90

话虽如此,最好使用Blender建议的Split()。

在javascript组中,匹配就像

一样简单
var youtubeString = "http://www.youtube.com/watch?v=Nlwa0ZWrO8g#t=1m30s?someweirdthing";
var myRegexp      = /youtube.com\S+#t=((\d+m)?(\d+[s]?)?)/g;
var match         = myRegexp.exec(youtubeString);
alert(match[1]);

答案 1 :(得分:1)

我会使用.split()

> 'http://www.youtube.com/watch?v=Nlwa0ZWrO8g#t=1m30s'.split('#t=')[1]
"1m30s"

对于正则表达式,您可以使用:

/#t=([^&$?]+)/