Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何解析时间因子正则表达式_Javascript_Regex - Fatal编程技术网

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(/[ :]/);