0

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

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

示例代码:

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]);因为正则表达式有“:”和“空格”和“(AM | PM | am | pm)”所以它不会转换parts[1]为小写。

谁能帮我使用这个正则表达式?

4

1 回答 1

1

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

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

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

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

然后当然'pm'将存储在parts[2].

于 2012-06-13T13:35:43.140 回答