首页 > 后端开发 > php教程 > 如何使用正则表达式从文本中提取 YouTube 视频 ID?

如何使用正则表达式从文本中提取 YouTube 视频 ID?

Mary-Kate Olsen
发布: 2024-12-16 15:49:18
原创
948 人浏览过

How to Extract YouTube Video IDs from Text Using Regular Expressions?

如何使用正则表达式从文本中提取 YouTube 视频 ID

问题:

给定用户可以在其中输入文本的文本字段,任务是提取所有 YouTube 视频 URL 及其对应的ID。

使用正则表达式的解决方案:

要从给定字符串中提取 YouTube 视频 ID,您可以使用可匹配所有可能的 YouTube URL 格式的正则表达式。下面是一个可以实现此目的的示例正则表达式:

https?://(?:[0-9A-Z-]+\.)?(?:youtu.be/|youtube(?:-nocookie)?\.com\S*?[^\w\s-])([\w-]{11})(?=[^\w-]|$)(?![?=&amp;+%\w.-]*(?:['"][^<>]*>|</a>))[?=&amp;+%\w.-]*
登录后复制

正则表达式细分:

  • https?://:匹配 HTTP 或 HTTPS 协议。
  • (?:[0-9A-Z-] .)?: 匹配可选subdomain.
  • (?:youtu.be/|youtube(?:-nocookie)?.comS*?[^ws-]):匹配任何 YouTube 主机格式,包括“youtu.be”, “youtube.com”、“youtube-nocookie.com”,并允许在视频 ID 之前添加其他字符。
  • ([w-]{11})(捕获Group):捕获 YouTube 视频 ID,这是一个 11 个字符的字母数字字符串。
  • (?=[^w-]|$):如果下一个字符不是字母数字字符,则匹配的正向先行断言或字符串的末尾。
  • (?![?=& %w.-]*(?:['"][^<>]*>|))[?=& %w.-]*:确保 URL 的否定先行断言尚未链接。

用法:

您可以使用此例如,在 JavaScript 中,您可以使用以下代码来提取 YouTube 视频 ID:

function extractYouTubeIds(text) {
  const regex = /https?://(?:[0-9A-Z-]+\.)?(?:youtu.be/|youtube(?:-nocookie)?.com\S*?[^\w\s-])([\w-]{11})(?=[^\w-]|$)(?![?=&amp;+%\w.-]*(?:['"][^<>]*>|</a>))[?=&amp;+%\w.-]*/;
  const matches = text.match(regex);
  return matches ? matches.map(id => id.slice(17)) : [];
}
登录后复制

请注意,slice(17) 删除​​了“https:/” /www.youtube.com/watch?v= 来自 YouTube URL 的前缀,用于提取视频 ID。

以上是如何使用正则表达式从文本中提取 YouTube 视频 ID?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板