适用于youtube的Regex



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

有人能帮我更改正则表达式以删除任何附加参数吗?

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

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

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

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

最新更新