使用JavaScript中的正则表达式使用Youtube API从Youtube评论中获取时间戳(hh:mm:ss)

Mar*_*ons 3 javascript regex youtube-api

我正在分析有时间戳的YouTube评论.因为一些注释可能指的是mm:ss,m:ss,hh:mm:ss或h:mm:ss中的句点,我需要为这些情况做准备.以下代码适用于mm:ss和m:ss,但仍然将小时视为mm:ss.例如,02:24:30返回144,因为它只分析前两个部分.这是代码:

var timePattern = /(([0-5][0-9])|[0-9])\:[0-9]{2,2}/;
var seconds = "";

for (var i = 0; i < comments.length; i++) {
    var matches = comments[i].match(timePattern);
    var matched = matches[0];
    var a = matched.split(':');
    if(matched.length == 7 || matched.length == 8) {
        seconds = (+a[0])*60*60 + (+a[1])*60 + a[2];        
    } else {
        seconds = (+a[0])*60 + (+a[1]); 
    }
    times.push(seconds);
}   
Run Code Online (Sandbox Code Playgroud)

oha*_*aal 5

尝试不同的正则表达式.

(?:([0-5]?[0-9]):)?([0-5]?[0-9]):([0-5][0-9])
Run Code Online (Sandbox Code Playgroud)

首先包含小时,第二个包含分钟,最后包含秒.

如果没有找到小时,则小时数将为空.