如何用正则从JavaScript字符串中提取所有H:MM格式24小时制时间戳
JavaScript 从混合字符串中提取24小时制时间戳方案
你当前使用的正则^([0-9]|0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$ 加了^(字符串开头)和$(字符串结尾)锚点,仅适用于校验整个字符串完全符合时间格式的场景,无法从包含其他内容的字符串中提取时间子串。适配你的需求需要做两处调整:
- 去掉首尾的
^和$锚点,允许匹配字符串任意位置的时间片段 - 正则末尾添加全局匹配标识
g,开启全局匹配才能一次性拿到所有符合规则的时间,不会仅返回第一个匹配结果
可直接运行的代码示例
// 原始输入字符串 const inputStr = "FooBar Examplestring 4:34 - 12:30"; // 适配提取场景的正则,添加\b单词边界避免误匹配带前缀数字的非法时间 const timeReg = /\b(?:[01]?\d|2[0-3]):[0-5]\d\b/g; // 提取所有符合规则的时间 const matchedTimes = inputStr.match(timeReg); console.log(matchedTimes); // 输出:['4:34', '12:30']
补充说明
- 正则中的
\d等价于[0-9],写法更简洁 ?:用于标记非捕获组,避免返回多余的分组匹配结果,降低性能开销- 单词边界
\b可以避免匹配到x3:45、123:45这类不符合规则的内容,如果你的场景中允许时间前后接非空格的其他字符,可以去掉\b
内容的提问来源于stack exchange,提问作者tzippy
相关产品推荐
相关产品推荐

