2012-09-04 71 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网址工作过。它不适合任何人让我知道,我可以做得更好。