包含分钟和/或秒的时间字符串如下所示
29m 15s
分隔符是单个空格。数字没有前导零。可以省略分钟或秒部分(但不是两者)。如果其中一个丢失,分隔符也是如此。也就是说,以下是这些时间字符串的所有有效示例:
1米
47S
1分15秒
12m 4s
我需要构造一个正则表达式,它将分别返回1美元和2美元的分钟数和秒数。我正在编写一个JavaScript程序,但它正在构建我遇到问题的正则表达式 - 而不是实际编程。
答案 0 :(得分:1)
这只会匹配分钟和秒钟中的数字:
/(?:(\d+)m)? ?(?:(\d+)s)?/
答案 1 :(得分:0)
如果我理解正确的话:
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 :(得分:0)
这比其他答案更冗长,但确实强制执行空间。此外,它确保数字不超过2个字符。
/^(?:(\d{1,2})m) (?:(\d{1,2})s)$|^(\d{1,2})[ms]$/
"13m 20s" //match
"13m" //match
"20s" //match
"13m20s" //no match