我正在尝试解析包含由 . 分隔的分钟和秒的字符串:
。min 和 secs 都是可选的(不过需要提供一个)。这是我希望从我的正则表达式中得到的:
'0' // => '', '0'
'30' // => '', '30'
':30' // => '', '30'
'1:' // => '1', ''
'1:30' // => '1', '30'
不需要获取一个空字符串,它将使用parseInt(value, 10) || 0
afterwhile 进行解析,所以它可以是0
, ''
, undefined
, ...
我试过这个正则表达式:
^([0-9]+)?:?([0-9]+)?$
但是当只有一个值并且没有分隔符时,它被认为是一分钟:
'0' // => '0', '' <= wrong result
'30' // => '30', '' <= wrong result
':30' // => '', '30'
'1:' // => '1', ''
'1:30' // => '1', '30'
您可以在此处查看测试用例。
任何的想法?
编辑:我当前的实现(没有正则表达式)看起来像这样:
var min, parts, sec, bp;
bp = '1:30';
parts = bp.split(':');
if (parts.length === 2) {
min = parts[0];
sec = parts[1];
} else {
min = 0;
sec = parts[0];
}