首页 > 解决方案 > 如何使用正则表达式从字符串中提取所有 24 小时时间?

问题描述

我想提取字符串中的所有 24 小时时间。

我想从中提取时间的字符串示例可能是:

The image has been uploaded at 20:12 and viewed at 21:04 and later was deleted around 23:43

我想从这个示例字符串中提取 3 次:

我试过这种模式:

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

但它似乎只验证时间是否正确。

标签: javascriptregex

解决方案


你可以使用

let string = `The 30:1234 image has been uploaded at 20:12 and viewed at 21:04 and later was deleted around 23:43`;

let rx = /(\d+):(\d+)/g;

let match;

while ((match = rx.exec(string)) !== null) {
    if ((match[1] >= 0 && match[1] <= 24) && (match[2] >= 0 && match[2] <= 60)) {
        console.log(match[0]);
    }
}

在这里,您匹配任何模式digits:digits并验证它们在之后的正确范围内JavaScript。因此,例如30:1234将被忽略。


推荐阅读