Javascript 如何解析时间因子正则表达式
我使用正则表达式Javascript 如何解析时间因子正则表达式,javascript,regex,Javascript,Regex,我使用正则表达式([1-9]| 1[0-2]| 0[1-9]):([0-5][0-9])(am | PM | am | PM)表示时间因子。e、 g.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."); }
([1-9]| 1[0-2]| 0[1-9]):([0-5][0-9])(am | PM | am | PM)
表示时间因子。e、 g.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)”,所以它不转换小写的部分[1]
有人能帮我使用这个正则表达式吗?除了其他人指出的对语言的误用,而不是这个
var parts = currentVal.split(" ");
var parts = currentVal.split(":");
…使用另一个正则表达式按空格和冒号拆分:
当然,
'pm'
将存储在部分[2]
如果不解析正则表达式,则使用正则表达式解析字符串。match
返回一个数组。为什么要将currentValue
字符串与match
返回的数组进行比较?也许您应该使用正则表达式的功能?此外,您可以将正则表达式缩短为/^(0?[1-9]| 1[0-2]):([0-5][0-9])(am | pm)/ig
,最后,您需要在正则表达式的开头添加一个单词边界(\b)或字符串的开头(^),否则“14:00pm”将匹配,因为它包含有效的匹配“4:00pm”。
var parts = currentVal.split(/[ :]/);