【问题标题】:Javascript Extract t Time parameters from Youtube URLsJavascript 从 Youtube URL 中提取 t 时间参数
【发布时间】:2016-03-04 18:17:46
【问题描述】:

我搜索了一种提取t时间参数内容的方法

所以,例如:

https://youtu.be/YykjpeuMNEk?t=2m3s
https://youtu.be/YykjpeuMNEk?t=3s
https://youtu.be/YykjpeuMNEk?t=1h2m3s

我想获取 h、m 和 s 值。

我可以想象我必须使用正则表达式才能完成这项工作,但我找不到正确的表达式字符串(那时的小新手)

我暂时只有这个:

var matches = t.match(/[0-9]+/g);

我用这个工具来测试不同的表达方式,但无法正确格式化并确保内容与 h、m 和 s 完全相关。

如果你有任何想法;)

回答对我有用

url = 'https://youtu.be/vTs7KXqZRmA?t=2m18s';
var matches = url.match(/\?t=(?:(\d+)h)?(?:(\d+)m)?(\d+)s/i);
var s = 0;
s += matches[1] == undefined ? 0 : (Number(matches[1])*60*60);
s += matches[2] == undefined ? 0 : (Number(matches[2])*60);
s += matches[3] == undefined ? 0 : (Number(matches[3]));
console.log(s);

输出:

138

谢谢大家 ;)

【问题讨论】:

  • 感谢@WiktorStribiżew,就像一个魅力!
  • 我猜阿努巴瓦的作品也是?如果没有,我会发布我的答案。
  • 是的,谢谢@WiktorStribiżew,这几乎是一样的,而且它的工作原理;)干杯!

标签: javascript regex youtube


【解决方案1】:

您可以使用此正则表达式来捕获 hms 值,并将 hm 作为可选部分:

/\?t=(?:(\d+)h)?(?:(\d+)m)?(\d+)s/i

RegEx Demo

RegEx 拆分:

\?t=        # match literal text ?t=
(?:         # start capturing group
   (\d+)h   # match a number followed by h and capture it as group #1
)?          # end optional capturing group
(?:         # start capturing group
   (\d+)m   # match a number followed by m and capture it as group #2
)?          # end optional capturing group
(\d+)s      # # match a number followed by s and capture it as group #3

【讨论】:

  • 哇...很好..完美运行!非常感谢@anubhava :)
猜你喜欢
  • 2014-11-20
  • 2016-04-24
  • 1970-01-01
  • 2015-05-30
  • 1970-01-01
  • 1970-01-01
  • 2021-01-18
  • 2010-12-10
相关资源
最近更新 更多