2013-04-17 24 views
1

我正在寻找一种方式,我可以得到一个URL像任何一个:正则表达式从YouTube URL返回起始时间(#T =)

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 

这是可能的一个单一的正则表达式?

回答

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

定位捕获组1的值,它会返回

1m30s 
90s 
90 

那就是sai d,根据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

我会用.split()

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

对于一个正则表达式,你可以使用:

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

简单见我的编辑给的网址,它不会与您的解决方案工作。 – Jake

+0

@Jake:看我的编辑。 – Blender