用于确定时间的正则表达式

Regular expression for determining time

本文关键字:正则表达式 定时间 用于      更新时间:2023-09-26

包含分钟和/或秒的时间字符串如下所示

29 分钟 15 秒

分隔符是单个空格。数字没有前导零。分钟或秒部分(但不能同时省略两者)。如果缺少其中一个,则分隔符也会丢失。也就是说,以下是此类时间字符串的所有有效示例:

1米
47秒
1 分钟 15 秒
12 分钟 4 秒

我需要构造一个正则表达式,该表达式将分别在 $1 和 $2 中返回分钟数和秒数。我正在编写一个JavaScript程序,但它正在构造我有问题的正则表达式 - 而不是实际的编程。

这将仅匹配以分钟和秒为单位的数字:

/(?:('d+)m)? ?(?:('d+)s)?/
如果我

理解正确的话:

var s = '29m 15s';
var r = /(?:('d+)m)?'s*(?:('d+)s)?/;
var m = s.match(r);

这将产生如下数组:

[ '29m 15s', '29', '15', index: 0, input: '29m 15s' ]

其中 m[1] 是分钟,m[2] 秒(这个是可选的)

这比其他答案更详细,但确实强制执行空格。此外,它还确保数字长度不超过 2 个字符。

/^(?:('d{1,2})m) (?:('d{1,2})s)$|^('d{1,2})[ms]$/
"13m 20s" //match
"13m" //match
"20s" //match
"13m20s" //no match