如何使用javascript检查字符串是否包含有效的vimeo网址?
例如:https://vimeo.com/23374724 是一个有效的网址。
例如:https://vimeo.com/23374724 是一个有效的网址。
不要仅依赖正则表达式,因为Vimeo经常更改/更新其URL模式。截至2017年10月2日,Vimeo支持六种URL方案。
https://vimeo.com/*
https://vimeo.com/*/*/video/*
https://vimeo.com/album/*/video/*
https://vimeo.com/channels/*/*
https://vimeo.com/groups/*/videos/*
https://vimeo.com/ondemand/*/*
相反,使用他们的API来验证Vimeo URL。这里是oEmbed (文档) API,它接受一个URL,检查其有效性并返回一个带有大量视频信息的对象(请查看开发页面)。虽然不是旨在如此,但我们可以轻松地使用它来验证给定的URL是否来自Vimeo。
因此,使用ajax会像这样:
var VIMEO_BASE_URL = "https://vimeo.com/api/oembed.json?url=";
var yourTestUrl = "https://vimeo.com/23374724";
$.ajax({
url: VIMEO_BASE_URL + yourTestUrl,
type: 'GET',
success: function(data) {
if (data != null && data.video_id > 0)
// Valid Vimeo url
else
// not a valid Vimeo url
},
error: function(data) {
// not a valid Vimeo url
}
});
尝试使用正则表达式?
/^(http\:\/\/|https\:\/\/)?(www\.)?(vimeo\.com\/)([0-9]+)$/.test("url");
https://vimeo.com/
开头并跟随 8 位数字,那么这个就可以:var myurl = "https://vimeo.com/23374724";
if (/https:\/\/vimeo.com\/\d{8}(?=\b|\/)/.test(myurl)) {
alert("matches");
} else {
alert("doesn't match")
};
这段代码有点丑陋,因为它包含了所有的\/
转义斜杠,但它的作用是查找我上面提到的字符串,后跟8个数字序列,然后是任何零宽度单词边界或另一个斜杠。
\d{8,}
替换\d{8}
。 - Scott Mermelstein(?:https?\:\/\/)?(?:www\.)?(?:vimeo\.com\/)([0-9]+)
如果需要使用视频的id,则可以在第1组中捕获它。您可以在debuggex上看到其操作过程。