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

Flutter中检测YouTube/Instagram/Facebook/TikTok链接的方法咨询

Flutter 检测YouTube/Instagram/Facebook/TikTok链接的优化方案

你现有代码存在几个需要修正和优化的点:

  1. TikTok域名拼写错误:把tiktok.com写成了titok.com,会导致完全无法识别正确的TikTok链接
  2. Uri匹配逻辑局限:只覆盖了主域名和www子域名,没考虑移动端子域名(比如m.facebook.com)或其他官方子域名
  3. YouTube正则可扩展:可以加入对短视频(shorts)链接的支持

以下是优化后的实现方案:

优化后的检测函数

1. YouTube链接检测(正则增强)

覆盖标准视频、短视频、嵌入链接、短链以及带额外参数的链接:

static bool isYouTubeUrl(String url) {
  final regex = RegExp(
    r'^(?:https?://)?(?:www\.)?(?:youtube\.com|youtu\.be)/(?:watch\?v=|embed/|v/|shorts/)?([\w-]+)(?:\S*)',
    caseSensitive: false,
  );
  return regex.hasMatch(url.trim());
}

说明:新增shorts/支持短视频链接,忽略大小写,允许链接末尾携带其他参数。

2. Facebook链接检测(Uri解析优化)

自动匹配所有Facebook官方子域名:

static bool isFacebookUrl(String url) {
  final uri = Uri.tryParse(url.trim());
  return uri != null && uri.host.endsWith('.facebook.com');
}

3. Instagram链接检测(Uri解析优化)

自动匹配所有Instagram官方子域名:

static bool isInstagramUrl(String url) {
  final uri = Uri.tryParse(url.trim());
  return uri != null && uri.host.endsWith('.instagram.com');
}

4. TikTok链接检测(修复拼写+Uri优化)

先修正拼写错误,再匹配所有TikTok官方子域名:

static bool isTikTokUrl(String url) {
  final uri = Uri.tryParse(url.trim());
  return uri != null && uri.host.endsWith('.tiktok.com');
}

可选:统一平台检测函数

如果需要一次性判断链接所属平台,可以封装枚举类型的统一检测函数:

enum SocialPlatform { youtube, facebook, instagram, tiktok, unknown }

static SocialPlatform detectSocialPlatform(String url) {
  final trimmedUrl = url.trim();
  if (isYouTubeUrl(trimmedUrl)) return SocialPlatform.youtube;
  if (isFacebookUrl(trimmedUrl)) return SocialPlatform.facebook;
  if (isInstagramUrl(trimmedUrl)) return SocialPlatform.instagram;
  if (isTikTokUrl(trimmedUrl)) return SocialPlatform.tiktok;
  return SocialPlatform.unknown;
}

注意事项

  • 处理用户输入时务必先调用trim(),避免前后空格导致Uri解析失败
  • 正则添加了caseSensitive: false,兼容大小写混合的链接(比如YOUTUBE.COM)
  • Uri后缀匹配的方式比硬编码域名更灵活,能覆盖所有官方子域名场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:52:36