从文本中获取时间

时间:2016-04-12 10:29:50

标签: javascript regex time

我试图使用正则表达式从字符串中提取时间。例如,时间可以是12小时格式9pm , 9am或24小时格式20:00。我写了以下表达式,但它似乎只适用于12小时格式。

var re = /(([0-1]{0,1}[0-9])|(2[0-3]))(:|.)[0-5]{0,1}[0-9][ ]?(AM|am|PM|pm)?/g;

var stringToCheck = "Foo Fighters are playing on the main stage at 20:00."; 

var arr = re.exec(stringToCheck);
console.log(arr);

运行此代码会打印出null。它是正则表达式吗?

2 个答案:

答案 0 :(得分:0)

这看起来有点长,但做得很好。

正则表达式: (?:[0][0-9]|[1][012])

<强>解释

  • 12 hour匹配(?::[0-5][0-9])格式的小时部分。

  • 12 hour匹配(?:[AP]M|[ap]m)格式的可选分钟部分(如果包含)。

  • (?:[ap]m)匹配子午后缀,或者您只需编写i并使用标记(?:[0-1][0-9]|2[0-3]):(?:[0-5][0-9])使其不区分大小写。

  • 24 hour符合 class Car(object): condition = "new" def __init__(self): self.model =raw_input() self.color = raw_input() self.mpg = raw_input() class Jeep(object): condition = "new" def __init__(self): self.model =raw_input() self.color = raw_input() self.mpg = raw_input() class ElectricCar(Car, Jeep): def __init__(self, battery_type): self.battery_type=battery_type super(ElectricCar, self).__init__() def printer(self): print self.model car = ElectricCar('battery') car.printer() print car.__dict__ 格式。

<强> Regex101 Demo

答案 1 :(得分:0)

正如你在this fiddle中所看到的那样,你的正则表达式和其他正则表达式都有效。至少对你的示例字符串。 Haven没有对其他字符串进行测试。

代码:

var re = /(([0-1]{0,1}[0-9])|(2[0-3]))(:|.)[0-5]{0,1}[0-9][ ]?(AM|am|PM|pm)?/g;
var stringToCheck = "Foo Fighters are playing on the main stage at 20:00."; 
var arr = re.exec(stringToCheck);
document.write(arr);

你在正则表达式中确实有一些捕获组,但我不知道你是否真的想要。

此致