2014-01-20 105 views
1

我需要剝離出的嵌入的YouTube視頻的ID,所以我的網址是這樣的:jQuery的正則表達式匹配返回空字符串

www.youtube.com/embed/[someID]&rel=0&controls=0&showinfo=0&frameborder=1&modestbranding=1 

所有我想要的是[someID]字符串。我已經聲明瞭一個空數組來存儲正則表達式匹配;

var videoID = []; 

我得出一個解決方案最接近的是:

videoID = videoID.match("embed/(\w*)"); 

但這會導致如下:

video[0] ("embed/") 
video[1]() 
+0

jQuery不是一種語言。你正在編寫JavaScript。 JS沒有任何內置的URL解析功能,所以你必須做一些字符串操作:'url.split('&')[0] .split('/')。slice(-1)[ 0]' – Blender

回答

1

使用此:

url = "www.youtube.com/embed/someID&rel=0&controls=0&showinfo=0&frameborder=1&modestbranding=1"; 

然後使用:

var videoID = url.match(/embed\/(\w*)/); // regex 

要不然:

如果你提供一個字符串,然後 String#match方法將嘗試構建一個 RegExp對象和這種情況下,你需要使用 \\w,而不是 \w

["embed/someID", "someID"] 

var videoID = url.match("embed/\\w*)"); // regex object 

兩者都會給這個輸出

+0

謝謝anubhava第一個解決方案爲我工作 – user2928010

+0

不客氣,很高興它解決了。 – anubhava

0

我不知道如果可以做正,Lookbehinds ,但試試這個(?<=embed\/)([^&]*)

如果不是,那麼(?:embed\/)([^&]*)是cl你的例子中的oser。


演示:

http://regex101.com/r/nW5uL8

1

試試這個,你可能會得到id。我沒有使用正則表達式,但我們仍然可以從上面的演示中獲得id,例如urls。

var url ="www.youtube.com/embed/[someID]&rel=0&controls=0&showinfo=0&frameborder=1&modestbranding=1"; 

var urlQueries = url.split('/'); 
var queryParameters = urlQueries[2].split('&'); // arrays of all query parameters 
var id = queryParameters[0]; // get ids at index 0 

工作演示here

0

\w比賽[a-zA-Z0-9_]而YouTube的IDS可以包含-。以下正則表達式應該可以工作:

var url ="//www.youtube.com/embed/_-8IufkbuD0&rel=0&controls=0&showinfo=0&frameborder=1&modestbranding=1"; 
var match = url.match(/embed\/([^&]+)/); 
alert(match[1]); // _-8IufkbuD0 
相關問題