JavaScript用正则表达获取抖音分享链接中的视频地址

时间:2025-02-18 21:53:23

1.正则表达式匹配:基于正则表达式对文本中的 URL 进行匹配和提取。例如,使用以下正则表达式即可匹配出上述示例中的视频链接。

const reg = /((?:https?:\/\/)?[\w/\-?=%.]+\.(?:douyin|tiktok)\.com\S+)/i;
const matches = (reg);
if (matches) {
  const url = matches[1];
  // 处理匹配到的 url
}

2.字符串切割:基于字符分隔和模式匹配对文本进行处理。例如,先将字符串按空格和换行符进行分割,再遍历每个分割后的字符,判断是否包含视频链接的主要特征。

const tokens = (/[\s\n]/);
for (let i = 0; i < ; i++) {
  const token = tokens[i];
  if (('') || ('')) {
    const pos = ('http');
    const url = pos >= 0 ? (pos) : '';
    // 处理匹配到的 url
  }
}

使用正则表达式匹配和字符串切割两种方法封装到 getUrl() 函数中的示例代码:

function getUrl(str) {
  // 使用正则表达式匹配
  const reg = /((?:https?:\/\/)?[\w/\-?=%.]+\.(?:douyin|tiktok)\.com\S+)/i;
  const matches = (reg);
  if (matches) {
    return matches[1];
  }

  // 或者使用字符串分隔
  const tokens = (/[\s\n]/);
  for (let i = 0; i < ; i++) {
    const token = tokens[i];
    if (('') || ('')) {
      const pos = ('http');
      const url = pos >= 0 ? (pos) : '';
      return url;
    }
  }

  // 未能匹配到合法的URL,返回空值
  return null;
}

使用时,只需要调用该函数并传入需要处理的文本,即可得到匹配到的视频链接。例如:

const str = '这是一段包含抖音视频和网页链接的文本,/video/xxx #抖音 视频  ';
const url = getUrl(str);
(url); // 输出:/video/xxx

算法优化

原算法可能无法正确解析一些 URL 链接,例如该示例中包含其他字符或标点符号的链接。如果需要更好的解析效果,可以通过以下方式尝试优化该算法:

  1. 考虑将正则表达式 reg 修改为更严格的匹配规则以避免错误的匹配。例如,只匹配以 http://https:// 开头的 URL 链接: /https?:\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]/g

  2. 在获取到匹配结果后,再进一步判断是否是有效的视频链接。例如,在上述语句中,可以考虑优先匹配包含 的链接,并排除掉其他非视频链接。可尝试使用如下代码进行优化:

function getUrl(str) {
  const reg = /(https?:\/\/[\w\-./:]+\.(?:douyin|tiktok)\.com\/\S+)/i; // 正则表达式匹配
  const matched = (reg); // 获取匹配结果
  if (matched &&  > 0) { // 判断匹配结果是否存在并且不为空
    return matched[0]; // 返回第一个匹配结果
  }
  return null; // 未匹配到则返回空值
}