【发布时间】:2015-08-28 14:42:05
【问题描述】:
我正在尝试编写一些 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 :";
}
}
【问题讨论】:
-
如果 2300 不是下午 23 点而是午夜后 23 分钟(所以是 MMHH 而不是 HHMM)怎么办?从输入字符串中检测格式并不是那么简单。
-
2300在世界上用什么格式表示午夜过后 23 分钟? -
这只是一个例子。碰巧这种问题也被问到其他格式。因此,例如,您使用日期和月份而不是小时和分钟 0102 是意大利人的 2 月 1 日和英国人的 1 月 2 日
-
请说明您对使用 24 小时表示法的期望。 00:00 至 24:00,或标准军事通信规定 00:00 至 23:59,或美国海军和美国海军陆战队规定 00:01 至 24:00? en.wikipedia.org/wiki/24-hour_clock
-
@DavideLorenzoMARINO 0102 对于大多数理智的国家来说是二月的第一天,尽管我个人会写 2 月 1 日(或 1 月 2 日)以避免歧义。
标签: javascript regex time