我正在尝试编写一些JS代码来验证以24小时格式输入到输入字段的时间。我希望能够检测到HH:MM,HHMM和HMM并拒绝任何其他内容。我也想检测一下24小时是否可能 - 例如拒绝26:70和喜欢这就是我目前无法做到的事情:
function validateTime(rawtime) {
var timeregex = new RegExp('([01]?[0-9]|2[0-3]):[0-5][0-9]');
var timeregex4 = new RegExp('([01]?[0-9]|2[0-3])[0-5][0-9]');
var timeregex3 = new RegExp('[0-9][0-5][0-9]');
var numeric = new RegExp('^[0-9]+$');
if (numeric.test(rawtime))
{
if ((rawtime.length == 4) && (timeregex4.test(rawtime))){
document.getElementById("fdbk").innerHTML ="time with 4 digits";
}
else if ((rawtime.length == 3) && (timeregex3.test(rawtime))){
document.getElementById("fdbk").innerHTML ="time with 3 digits";
}
}
else if (timeregex.test(rawtime)) {
document.getElementById("fdbk").innerHTML ="time with :";
}
}
答案 0 :(得分:2)
不太清楚问题是什么,这很容易^ _ ^
var timeregex = /^([01]?[0-9]|2[0-3]):?([0-5][0-9])$/;
现在匹配......
var match = rawtime.match(timeregex);
你得到......
var hours = parseInt(match[1],10),
minutes = parseInt(match[2],10);
完成?
答案 1 :(得分:0)
这是一个简单的功能(不使用RegEx),可验证您所要求的时间格式。
function valTime(time) {
var len = time.length,
hour,
mins;
if(len == 5) { //HH:MM
var spl = time.split(':');
if(!$.isArray(spl)) { return false; } //Not an array
hour = spl[0];
mins = spl[1];
}
if(len == 4) { //HHMM
hour = time[0] + time[1];
mins = time[2] + time[3];
}
if(len == 3) { //HMM
hour = time[0];
mins = time[1] + time[2];
}
if(+hour <= 23 && +mins <= 59) {
return true;
} else {
return false;
}
}