Javascript 如何使用正则表达式拆分时间字符串

Javascript 如何使用正则表达式拆分时间字符串,javascript,regex,Javascript,Regex,在javascript中,我有一个时间字符串var time=“12:30:49PM” 我想将小时、分钟、秒和AM/PM与该字符串分开 浏览stackoverflow,我能够找到下面的正则表达式,分为小时、分钟和上午/下午,但我非常不擅长正则表达式,所以我无法解决如何进行秒 var hours = Number(time.match(/^(\d+)/)[1]); var minutes = Number(time.match(/:(\d+)/)[1]); var AMPM = time.m

在javascript中,我有一个时间字符串
var time=“12:30:49PM”

我想将小时、分钟、秒和AM/PM与该字符串分开

浏览stackoverflow,我能够找到下面的正则表达式,分为小时、分钟和上午/下午,但我非常不擅长正则表达式,所以我无法解决如何进行秒

 var hours = Number(time.match(/^(\d+)/)[1]);
 var minutes = Number(time.match(/:(\d+)/)[1]);
 var AMPM = time.match(/([AaPp][Mm])$/)[1];

如何通过regex获取第二个

您可以将regex与ES6数组分解结合使用:

const time=“12:30:49下午”
常数[小时、分钟、秒、周期]=时间匹配(/\d+\w+/g);

控制台日志(小时、分钟、秒、周期)您可以将正则表达式与ES6数组分解结合使用:

const time=“12:30:49下午”
常数[小时、分钟、秒、周期]=时间匹配(/\d+\w+/g);

控制台日志(小时、分钟、秒、周期)您可以这样使用它:

var time=“12:30:49下午”
var小时数=数量(time.match(/^(\d+/)[1]);
var minutes=Number(time.match(/:(\d+/)[1]);
var sec=数字(time.match(/:(\d+)\d+$/)[1]);
var AMPM=时间匹配(/([ap]m)$/i)[1];
控制台日志(小时);
控制台日志(分钟);
控制台日志(秒);

控制台日志(AMPM)您可以这样使用它:

var time=“12:30:49下午”
var小时数=数量(time.match(/^(\d+/)[1]);
var minutes=Number(time.match(/:(\d+/)[1]);
var sec=数字(time.match(/:(\d+)\d+$/)[1]);
var AMPM=时间匹配(/([ap]m)$/i)[1];
控制台日志(小时);
控制台日志(分钟);
控制台日志(秒);

控制台日志(AMPM)只需在冒号和(p\A)M部分上拆分

var time=“12:30:49下午”;
var parts=time.split(/:|(\DM)/).filter(布尔);

console.log(parts)
只需在冒号和(p\A)M部分上拆分即可

var time=“12:30:49下午”;
var parts=time.split(/:|(\DM)/).filter(布尔);

console.log(parts)
在您的示例中,您只需执行以下操作:

var time=“12:30:49下午”;
var小时数=数量(time.match(/^(\d+/)[1]);
var minutes=Number(time.match(/:(\d+/)[1]);
var AMPM=时间匹配(/([AaPp][Mm])$/)[1];
var seconds=数字(time.match(/:(\d+):(\d+/)[2]);

日志(小时,:,分钟,:,秒,AMPM)在您的示例中,您只需执行以下操作:

var time=“12:30:49下午”;
var小时数=数量(time.match(/^(\d+/)[1]);
var minutes=Number(time.match(/:(\d+/)[1]);
var AMPM=时间匹配(/([AaPp][Mm])$/)[1];
var seconds=数字(time.match(/:(\d+):(\d+/)[2]);
日志(小时,:,分钟,:,秒,AMPM)怎么样!:

console.log(DateTimeFormat(new Date(), '`The Year is ${y} DateTime is: ${m}/${d}/${y} Time is: ${h}:${M}:${s}   `'))

function DateTimeFormat(dt, fmt)
{
    [y, m, d, h, M, s, ms] =  new 
    Date(dt).toLocaleString('UTC').match(/\d+/g)
    return eval(fmt)
}
怎么样!:

console.log(DateTimeFormat(new Date(), '`The Year is ${y} DateTime is: ${m}/${d}/${y} Time is: ${h}:${M}:${s}   `'))

function DateTimeFormat(dt, fmt)
{
    [y, m, d, h, M, s, ms] =  new 
    Date(dt).toLocaleString('UTC').match(/\d+/g)
    return eval(fmt)
}

这是一种很好的方式:)这太可爱了!我也喜欢你的方法,我可能也会这么做。一个问题是正则表达式有点太松散了,所以它可能不会总是像预期的那样工作,而且你也不会有一个简单的方法来判断,因为它很可能就是这样。这是一个非常好的方法:)这很可爱!我也喜欢你的方法,我可能也会这么做。一个问题是正则表达式有点太松散了,所以它可能不会总是像预期的那样工作,而且你也不会有一个简单的方法来判断它,因为它很可能就是这样。如果有人想在toLocaleTimeString中使用它,你可以做以下操作:new Date().toLocaleTimeString('en-US',{timeZone})。match(/(\d+)(\d{2}):(\d{2})(AM{PM i)如果有人想将其用于toLocaleTimeString,您可以执行以下操作:new Date().toLocaleTimeString('en-US',{timeZone}).match(/(\d+):(\d{2}):(\d{2})(AM | PM)/i)