从iFrame标记内的嵌入网址中提取YouTube视频ID

时间:2015-10-09 10:21:49

标签: regex

我有一定数量的内容:

<p><strong>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut ullamcorper enim ut nulla fringilla, non elementum nunc dapibus. Donec porta a lorem in vestibulum. Aenean viverra vulputate finibus. Sed malesuada nibh vitae enim luctus, at placerat diam vehicula.</strong></p>

<p>Quisque eu nisl sed tellus congue aliquet ac id risus. Etiam eget nisi ac lectus cursus suscipit. Mauris a dictum justo. Aliquam eget mi vel nunc imperdiet ultricies.</p>

<iframe width="480" height="270" frameborder="0" src="https://www.youtube.com/embed/EgqUJOudrcM" allowfullscreen="" ></iframe>

我要做的就是获取YouTube视频ID。

到目前为止,我已经提出了以下正则表达式:

/<iframe.*src=["\'].*youtube\.com\/embed\/(.*)["\'] ?>/

如果src属性是标记中的最后一个属性,则此方法有效,否则不起作用。如何编写正则表达式以克服这个问题?

Works in this case

But not in this one

如您所见,在第二个示例中,我的正则表达式也匹配src之后的属性。我知道为什么这种情况发生了,我无法弄清楚如何防止它。

我当然不是正则表达式的专家,所以欢迎任何改进我现有的建议。

2 个答案:

答案 0 :(得分:3)

有了这个:

<iframe.*?src=".*?youtube\.com\/embed\/(\w+)

.*?避免匹配太多并停在第一个src属性上 然后它直接匹配网址。

编辑:你只想要id,而不是完整的URL

答案 1 :(得分:1)

您可以使用以下正则表达式:

<iframe[^>]*src=\"[^\"]+\/([^\"]+)\"[^>]*>