用于解析人类可读日期的Javascript正则表达式

用于解析人类可读日期的Javascript正则表达式,javascript,regex,parsing,Javascript,Regex,Parsing,我在Javascript中有一个日期字符串,它可能看起来像: 1h 1h2m 1d3m4s 2d2h2m2s2ms 1ms 3s5ms 指示灯不会改变,它们是d、h、m、s、ms 什么是解析数字的好正则表达式: 对于3s5ms,它应该是: parsed = [0,0,0,3,5] parsed = [1,0,4,0,0] 对于1d4m,它应该是: parsed = [0,0,0,3,5] parsed = [1,0,4,0,0] 这个怎么样: var getNumbers = func

我在Javascript中有一个日期字符串,它可能看起来像:

1h
1h2m
1d3m4s
2d2h2m2s2ms
1ms
3s5ms
指示灯不会改变,它们是
d、h、m、s、ms

什么是解析数字的好正则表达式: 对于
3s5ms
,它应该是:

parsed = [0,0,0,3,5]
parsed = [1,0,4,0,0]
对于
1d4m
,它应该是:

parsed = [0,0,0,3,5]
parsed = [1,0,4,0,0]
这个怎么样:

var getNumbers = function (string) {
    var numbersArray = string.match(/(?:(\d+)d)?(?:(\d+)h)?(?:(\d+)m)?(?:(\d+)s)?(?:(\d+)ms)?/);
    numbersArray.shift();
    return numbersArray.map(function (val) {
        return parseInt(val) || 0;
    })
};


getNumbers("3s5ms") // [0, 0, 0, 3, 5]
getNumbers("2d2h2m2s2ms") //[2, 2, 2, 2, 2]

如果您尝试过任何操作,请添加有问题的尝试。为什么不使用Momentjs的持续时间格式?