如何Regex分割时间字符串

How to Regex split time string

本文关键字:字符串 时间 分割 Regex 如何      更新时间:2023-09-26

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

我想从该字符串中分离小时,分钟,秒和AM/PM。

浏览stackoverflow,我能够找到下面的正则表达式,分割小时,分钟和Am/pm,但我很不擅长正则表达式,所以我不知道如何做秒。

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

如何获得第二个通过regex

在您的示例中,您只需做如下操作:

var time = "12:30:49PM";   
var hours = Number(time.match(/^('d+)/)[1]);
var minutes = Number(time.match(/:('d+)/)[1]);
var AMPM = time.match(/([AaPp][Mm])$/)[1];
var seconds = Number(time.match(/:('d+):('d+)/)[2]);
console.log(hours, ":", minutes, ":", seconds, AMPM);  

然而,在一次调用中获得所有内容会更有效:

var time = "12:30:49AM";
var matches = time.match(/^('d+):('d+):('d+)([AP]M)$/i);
var hours = matches[1];
var minutes = matches[2];
var seconds = matches[3];
var AMPM = matches[4];
console.log(hours, ":", minutes, ":", seconds, AMPM);

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

const time = "12:30:49PM"
const [hour, min, sec, period] = time.match(/'d+|'w+/g);
console.log(hour, min, sec, period);

你可以这样使用:

var time = "12:30:49PM"
var hours = Number(time.match(/^('d+)/)[1]);
var minutes = Number(time.match(/:('d+)/)[1]);
var sec = Number(time.match(/:('d+)'D+$/)[1]);
var AMPM = time.match(/([ap]m)$/i)[1];
console.log(hours);
console.log(minutes);
console.log(sec);
console.log(AMPM);

只拆分冒号和(p 'A)M部分

var time  = "12:30:49PM";
var parts = time.split(/:|('DM)/).filter(Boolean);
console.log(parts)

var sec = Number(time.match(/:([0-9][0-9])/ig)[1].replace(":",""))

怎么样?:

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)
}