2012-09-04 121 views
0

我使用這個正則表達式打開YouTube鏈接到嵌入式代碼:正則表達式的YouTube

str.replace(/(?:http:\/\/)?(?:www\.)?(?:youtube\.com|youtu\.be)\/(?:watch\?)?(?:.+)v=(.+)/g, '<iframe width="420" height="345" src="http://www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe>'); 

但是當Youtube鏈接比V-參數更它不工作,像

http://www.youtube.com/watch?v=iXVe-efsYWw&feature=g-feat 

任何人都可以幫助我改變正則表達式來削減任何額外的參數嗎?

+1

你有什麼嘗試?你需要展示一些關於此事的研究,我們不是爲了爲你做你的工作。 – lanzz

+0

可能的重複:http://stackoverflow.com/questions/2597080/regex-to-parse-youtube-yid?rq=1 – aquinas

+0

這解決了我的問題:[PHP的正則表達式找到所有的YouTube視頻id在字符串](HTTP:///stackoverflow.com/questions/5830387/php-regex-find-all-youtube-video-ids-in-string/5831191#5831191) –

回答

0

我做的是最好的正則表達式是這一個:

~^.*(?:youtu\.be\/|youtube\.com\/(?:[^\?]*\?(?:.*&)?v=|(?:embed|v|user)\/))([^\?&"\'>]{11}).*$~si 

替換它組1(\ 1或$ 1)

希望它能幫助。爲我獲得的每個YouTube網址工作過。它不適合任何人讓我知道,我可以做得更好。