Javascript 从url中提取vimeo视频id

Javascript 从url中提取vimeo视频id,javascript,jquery,regex,Javascript,Jquery,Regex,虽然这个问题在这里是可用的,但我面临一个小问题。我无法使用此处使用的vimeo regex提取vimeo id: 我现在使用的代码: 函数VimeProcess(url){ var vimeoReg=/https?:\/\/(?:www\)?vimeo.com\/(?:channels\/(?:\w+\/)?;groups\/([^\/]*)\/视频\/;相册\/(\d+)/视频\/(d+)(\d+($)($\/); var match=url.match(vimeoReg); 如果(匹配){

虽然这个问题在这里是可用的,但我面临一个小问题。我无法使用此处使用的vimeo regex提取vimeo id:

我现在使用的代码: 函数VimeProcess(url){ var vimeoReg=/https?:\/\/(?:www\)?vimeo.com\/(?:channels\/(?:\w+\/)?;groups\/([^\/]*)\/视频\/;相册\/(\d+)/视频\/(d+)(\d+($)($\/); var match=url.match(vimeoReg); 如果(匹配){ console.log(匹配[3]); }否则{ 返回“错误”; } } 它不能安慰任何事情。 有人能帮忙吗?

这个“神奇的正则表达式”并没有那么神奇。例如,它不适用于您正在使用的URL

这里是我刚刚设置的另一个解析器:

var-url=
[
"https://vimeo.com/11111111",
"http://vimeo.com/11111111",
"https://www.vimeo.com/11111111",
"http://www.vimeo.com/11111111",
"https://vimeo.com/channels/11111111",
"http://vimeo.com/channels/11111111",
"https://vimeo.com/channels/mychannel/11111111",
"http://vimeo.com/channels/yourchannel/11111111",
"https://vimeo.com/groups/name/videos/11111111",
"http://vimeo.com/groups/name/videos/11111111",
"https://vimeo.com/album/2222222/video/11111111",
"http://vimeo.com/album/2222222/video/11111111",
"https://vimeo.com/11111111?param=test",
"http://vimeo.com/11111111?param=test",
"http://vimeo.com/whatever/somethingelse/11111111?param=test",
"http://www.player.vimeo.com/stuff/otherstuff/11111111"
];
$.each(url、函数(索引、url){
var firstPart=url.split(“?”)[0]。split(“/”;
var vid=第一部分[firstPart.length-1];
$(“表格”)。追加(“”+url+“”+vid+“”);
});
td{font-family:monospace;}
span{背景:浅绿色;}

输入结果
这个“神奇的正则表达式”并没有那么神奇。例如,它不适用于您正在使用的URL

这里是我刚刚设置的另一个解析器:

var-url=
[
"https://vimeo.com/11111111",
"http://vimeo.com/11111111",
"https://www.vimeo.com/11111111",
"http://www.vimeo.com/11111111",
"https://vimeo.com/channels/11111111",
"http://vimeo.com/channels/11111111",
"https://vimeo.com/channels/mychannel/11111111",
"http://vimeo.com/channels/yourchannel/11111111",
"https://vimeo.com/groups/name/videos/11111111",
"http://vimeo.com/groups/name/videos/11111111",
"https://vimeo.com/album/2222222/video/11111111",
"http://vimeo.com/album/2222222/video/11111111",
"https://vimeo.com/11111111?param=test",
"http://vimeo.com/11111111?param=test",
"http://vimeo.com/whatever/somethingelse/11111111?param=test",
"http://www.player.vimeo.com/stuff/otherstuff/11111111"
];
$.each(url、函数(索引、url){
var firstPart=url.split(“?”)[0]。split(“/”;
var vid=第一部分[firstPart.length-1];
$(“表格”)。追加(“”+url+“”+vid+“”);
});
td{font-family:monospace;}
span{背景:浅绿色;}

输入结果

使用当前代码,只需将正则表达式更改为以下代码:

/https?:\/\/player\.vimeo\.com\/video\/(\d+)/gm

并使用第一个(唯一)匹配元素
$1

使用当前代码,只需将正则表达式更改为此:

/https?:\/\/player\.vimeo\.com\/video\/(\d+)/gm

使用第一个(唯一的)匹配元素<代码> $ 1

< P>如果你只处理Vimeo URL,你也可以观察并考虑URL中的唯一整数给你视频ID。
var noquery = url.replace(/\?.*/,'') // remove anything after a ?
var id = noquery.replace(/[^0-9]/g, '') // get all the digits
这将为您提供一个更简单的代码,直到它崩溃


这取决于你想从一个你知道是视频ID的URL中提取ID,或者如果你想在一个URL包中提取Vimeo视频URL

如果你只处理Vimeo URL,你也可以观察到并考虑到URL中唯一的整数给你视频ID。
var noquery = url.replace(/\?.*/,'') // remove anything after a ?
var id = noquery.replace(/[^0-9]/g, '') // get all the digits
这将为您提供一个更简单的代码,直到它崩溃


这完全取决于你是想从一个你知道是视频id的url中提取id,还是想根据Jeremy Thille在列表中的答案从一包url中提取vimeo视频url

最后一步,我们是否可以使用
pop()
从该数组中获取最后一个元素,如下所示:

let videoId = url.split('?')[0].split('/').pop()

根据Jeremy Thille在列表中的答案

最后一步,我们是否可以使用
pop()
从该数组中获取最后一个元素,如下所示:

let videoId = url.split('?')[0].split('/').pop()

你在调用那个函数吗?因为它可以工作:也许你的url字符串有空格或换行符?尝试
.trim()
url字符串或将多行标志
m
添加到正则表达式中。@JeremyThille我正在使用
https://player.vimeo.com/video/120911380
但是当我使用
https://vimeo.com/channels/demoreels/120911380
it控制台
拒绝显示'https://vimeo.com/channels/demoreels/120911380“在一个框架中,因为它设置了“X-Frame-Options”到“sameorigin”。
该语法在正则表达式中不存在。@kmsdev我该怎么做?你在调用该函数吗?因为它可以工作:也许你的url字符串有空格或换行符?尝试
.trim()
url字符串或将多行标志
m
添加到正则表达式中。@JeremyThille我正在使用
https://player.vimeo.com/video/120911380
但是当我使用
https://vimeo.com/channels/demoreels/120911380
it控制台
拒绝显示'https://vimeo.com/channels/demoreels/120911380“在一个框架中,因为它设置了“sameorigin”的“X-Frame-Options”。
正则表达式中不存在该语法。@kmsdev我该怎么做?是的,我刚刚添加了一个测试URL。谢谢你的改进Jon:)是的,我刚刚添加了一个测试URL。谢谢你的改进Jon:)