Javascript/jQuery使用正则表达式搜索“分钟:秒”时间

Javascript/jQuery search for a "minute:second" time using regex

本文关键字:分钟 时间 搜索 jQuery 正则表达式 Javascript      更新时间:2023-09-26

我有一个变量数组,都包含文本。我只想选择包含分钟秒标记的项目,例如。'"3:00'", '"4:01'", '"0:23'".我了解如何遍历数组,我只需要知道如何实现这个正则表达式。

为了安全起见,这里是:

^(([0-9])|([0-1][0-9])|([2][0-3])):(([0-9])|([0-5][0-9]))$

我正在尝试在此实现它:

$.each(comments, function(i, val) { //Go through array with jQuery
    //Remove from array if instance of "minute:second" is not found
});

谢谢!

编辑:

戴夫·托马斯(Dave Thomas)要求提供示例。它们都是YouTube评论。下面列出了带有 minute:time 的评论和一个没有注释的示例。全部取自示例视频。

  1. "1:00 FIFA 12 comentator?"
  2. "呜呜<呜呜>

编辑2:

for (var i = 0, len = comments.length; i < len; i++) {
    if(!(comments[i].test(/(([0-5][0-9])|[0-9])':[0-9]{2,2}/))){
        comments.splice(i,1);
    }
}​

您需要使用本机过滤器函数来拟合数组(链接中有一个用于旧版浏览器的填充程序)而不是每个数组,并且您可以使用 test 针对字符串测试正则表达式:

var pattern = /(([0-9])|([0-1][0-9])|([2][0-3])):(([0-9])|([0-5][0-9]))/;
comments = comments.filter(function(str){
    return pattern.test(str);
});

我建议,如果你不介意更原生的JavaScript方法:

var comments = ["01:00 Fifa 12 comentator?", "ROOOOOOOONEY <3"];
for (var i = 0, len = comments.length; i < len; i++) {
    return comments[i].test(/(([0-5][0-9])|[0-9])':[0-9]{2,2}/);
}​

JS小提琴演示。

正则表达式的解释:

(([0-5][0-9])|[0-9])':[0-9]{2,2}
  • ([0-5][0-9])基本上标识了时间字符串的分钟部分,理由是分钟只能从0(或00)到59,这从0-5中搜索一个数字,后跟一个0-9
  • |表示"or",它将识别从0059的前两位数序列或后续序列。
  • [0-9]再次,这标识了0-9的范围,因此标识了个位数分钟。
  • ':因为冒号是正则表达式中的特殊字符,所以反斜杠会转义冒号,并允许搜索文字:字符。
  • [0-9]{2,2}搜索两位数的字符序列,每个字符序列都来自0-9序列。
<小时 />

编辑以更新上述代码:

var comments = [/*...rather a lot...*/]
    timelyComments = [];
for (var i = 0, len = comments.length; i < len; i++) {
    if (comments[i].test(/(([0-5][0-9])|[0-9])':[0-9]{2,2}/)){
        timelyComments.push(comments[i]);
    }
}
console.log(timelyComments);​

JS小提琴演示。

引用:

  • 正则表达式。
  • test() .