如何解析时间因素正则表达式

时间:2012-06-13 13:15:50

标签: javascript regex

我使用正则表达式([1-9]|1[0-2]|0[1-9]):([0-5][0-9]) (AM|PM|am|pm)作为时间因素。例如HH:MM pm。

现在我必须使用这个正则表达式。

示例代码:

if(currentVal.match(/([1-9]|1[0-2]|0[1-9]):([0-5][0-9]) (AM|PM|am|pm)/g) != currentVal) {
    alert("Invalid time.");
}                         

var parts = currentVal.split(" ");


var parts = currentVal.split(":");
parts[0] = parseInt(parts[0]);
parts[1] = parseInt(parts[1]);

if(parts[0] == 12) {
    parts[0] = 0;
}
if(parts[1].toLowerCase() == 'pm') {
    parts[0] += 12;
}

在这里,我的错误是parseInt(parts[1]);因为正则表达式具有“:”和“space”以及“(AM | PM | am | pm)”所以它不会以小写形式转换parts[1]

有人可以帮我使用这个正则表达式吗?

1 个答案:

答案 0 :(得分:1)

除了滥用其他人指出的语言,而不是这个...

var parts = currentVal.split(" ");
var parts = currentVal.split(":");

...使用另一个正则表达式来分隔空格冒号:

var parts = currentVal.split(/[ :]/);

然后,'pm'当然会存储在parts[2]