0

我正在使用此正则表达式将 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

任何人都可以帮我更改正则表达式以切断任何其他参数吗?

4

1 回答 1

0

我为此做的最好的正则表达式是这个:

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

将其替换为第 1 组。(\1 或 $1)

希望能帮助到你。为我得到的每个 youtube URL 工作。它对任何人都不起作用,让我知道,我可以让它变得更好。

于 2014-10-06T21:55:58.513 回答