从 YouTube 嵌入代码中提取视频 ID
Pulling a video id from YouTube embed code
我正在尝试移植PHP preg_match
表达式,以从Javascript中的YouTube嵌入代码中提取视频ID。我目前在 PHP 中有这个:
$pattern = '%(?:https?://)?(?:www'.)?(?:youtu'.be/| youtube'.com(?:/embed/|/v/|/watch'?v=))(['w-]{10,12})[a-zA-Z0-9'<'>'"]%x';
$result = preg_match($pattern, $url, $matches);
这有效并返回我一个视频ID。我尝试使用以下内容以使其在Javascript中工作:
var reg = /(?:https?://)?(?:www'.)?(?:youtu'.be/|youtube'.com(?:/embed/|/v/|/watch'?v=))(['w-]{10,12})/g;
var matches = uploadVideoEmbedCode.match(reg);
我使用的测试数据是:
<iframe width="560" height="315" src="http://www.youtube.com/embed/1NMUDb3Ewhs" frameborder="0" allowfullscreen></iframe>
当我尝试在javascript中使用上述正则表达式时,出现以下错误:
未捕获的语法错误:意外的令牌?
您的帮助将不胜感激。
您需要
转义正则表达式中的/
斜杠,因为它们是分隔符。每当要匹配文字/
时,请使用'/
:
var reg = /(?:https?:'/'/)?(?:www'.)?(?:youtu'.be'/|youtube'.com(?:'/embed'/|'/v'/|'/watch'?v=))(['w-]{10,12})/g;
另一种选择是使用 new RegExp('...', 'g')
而不是 /.../g
- 但随后您需要转义每个反斜杠,这会更烦人:
var reg = new RegExp('(?:https?://)?(?:www''.)?(?:youtu''.be/|youtube''.com(?:/embed/|/v/|/watch''?v=))([''w-]{10,12})', 'g');
若要最终获取 ID,请使用 var id = reg.exec(yourString)[1]
。
您必须转义正则表达式中的正斜杠:'/
.
相关文章:
- 视频HTML没有'无法在Internet Explorer 11上工作
- 播放当前视频时如何停止其他视频?JavaScript
- 使用Facebook live API创建实时视频对象时的隐私设置
- 在数据提取完成之前进行页面渲染
- 从我的频道中提取最后3个youtube视频
- 是从画布获取图像数据的任何方法,从远程视频中提取
- 如何仅使用Javascript从视频中提取base64 src
- 我正在从API提取一个包含视频的Object标签.如何在javascript中暂停视频
- PHP - 在视频上传期间提取帧
- 从 YouTube 嵌入代码中提取视频 ID
- 从视频名称中提取电影标题
- 当源是IE/EDGE上的加密令牌视频时,Canvas未从azure媒体播放器中提取图像
- 视频分析和关键帧提取的开源库
- 从Javascript/Regex中的youtube链接中提取视频ID
- 可靠地提取视频帧
- 加速JPG“视频”从代理网络摄像头中提取的
- 我将如何提取直接视频URL从视频嵌入代码在c#
- NodeJS提取数组缓冲区的视频作为图像
- 无法在移动浏览器中提取本地视频文件持续时间
- 使用jQuery从YouTube视频iFrame链接中提取ID