2016-11-04 100 views
1

在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]; 

如何获得通过正则表达式第二

回答

3

在你的榜样,你只会做这样的事情:

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

但是,它会更effecient在一个电话让一切:

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

5

您可以使用正则表达式与ES6阵列解构组合:

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

 
console.log(hour, min, sec, period);

+0

这是一个尼夫方式:) –

+0

这是可爱的! – Jackthomson

+0

我也喜欢你的方法,而且我很可能也会这么做。一个问题是正则表达式有点太松,所以它可能并不总是按预期工作,并且你不会有一个简单的方法来分辨,因为它可能只是随它而行。 – samanime

1

您可以使用它像这样:

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

1

就劈在结肠和(P \ A)M部分

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

 
console.log(parts)

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