You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用正则表达式检测Vimeo URL中的9位视频ID

提取Vimeo URL中的9位ID的正则解决方案

你的当前正则/\[\[(https?:\/\/vimeo\.com\/[0-9]+$)\]\]/gm有两个关键限制,导致无法匹配带频道、区域前缀的URL:

  • 要求数字必须直接紧跟在vimeo.com/之后,排除了中间有channels/、jp/这类路径前缀的情况
  • 使用$锚定字符串结尾,意味着数字必须是URL的最后一段(虽然你的示例里数字确实在结尾,但原正则的结构导致前面有其他路径时根本匹配不到)

调整后的正则表达式

/\[\[(?:https?:\/\/vimeo\.com\/).*?(\d{9})\]\]/gm

正则各部分解释

  • \[\[:匹配包裹URL的开头双中括号
  • (?:https?:\/\/vimeo\.com\/):非捕获组,匹配Vimeo的基础域名(支持http/https),不捕获这部分内容
  • .*?:非贪婪匹配任意字符,直到遇到后面的9位数字(避免匹配过多内容)
  • (\d{9}):捕获组,精准匹配并提取9位数字(这就是我们需要的Vimeo ID)
  • \]\]:匹配包裹URL的结尾双中括号
  • gm:全局匹配+多行匹配标志,确保能处理多个URL字符串

代码示例(JavaScript)

const vimeoUrls = [
  "[[https://vimeo.com/channels/mercedesbenz/166551756]]",
  "[[https://vimeo.com/153002910]]",
  "[[https://vimeo.com/jp/channels/staffpicks/259634725]]"
];

const idRegex = /\[\[(?:https?:\/\/vimeo\.com\/).*?(\d{9})\]\]/gm;

vimeoUrls.forEach(url => {
  let match;
  // 循环提取每个URL中的ID
  while ((match = idRegex.exec(url)) !== null) {
    console.log(`提取到的Vimeo ID: ${match[1]}`);
  }
});

运行这段代码会输出:

提取到的Vimeo ID: 166551756
提取到的Vimeo ID: 153002910
提取到的Vimeo ID: 259634725

额外说明

如果Vimeo ID可能存在长度不是9位的情况(虽然你明确要9位),可以把\d{9}改成\d+来匹配任意长度的数字ID,再根据需要做长度校验。

内容的提问来源于stack exchange,提问作者Maca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:14:02