我试图使用正则表达式从字符串中提取时间。例如,时间可以是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。它是正则表达式吗?
答案 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);
你在正则表达式中确实有一些捕获组,但我不知道你是否真的想要。
此致