【问题标题】:Javascript function to validate time 00:00 with regular expression使用正则表达式验证时间 00:00 的 Javascript 函数
【发布时间】:2011-01-04 03:25:54
【问题描述】:

我正在尝试使用正则表达式创建一个 javascript 函数来验证和格式化 24 小时的时间,接受不带分号的时间并删除空格。
示例:
如果用户键入 "0100"" 100""100 ",它将被接受但格式化为 "01:00"
如果用户输入"01:00",它将被接受,无需格式化。

谢谢。

【问题讨论】:

  • 如果用户键入 25:78 - 无效时间怎么办?

标签: javascript regex validation function time


【解决方案1】:

function formatTime(time) {
    var result = false, m;
    var re = /^\s*([01]?\d|2[0-3]):?([0-5]\d)\s*$/;
    if ((m = time.match(re))) {
        result = (m[1].length === 2 ? "" : "0") + m[1] + ":" + m[2];
    }
    return result;
}
alert(formatTime(" 1:00"));
alert(formatTime("1:00 "));
alert(formatTime("1:00"));
alert(formatTime("2100"));
alert(formatTime("90:00")); // false

任何输入格式无效的调用都将返回 false。

【讨论】:

  • 我将它修复为“27:00”无效。
  • 感谢 Ocus,这个功能可以完成这项工作。
  • 感谢 Ocus,此功能可以满足我的需要。
  • 如果“11”应该被评估为“11:00”,这个正则表达式应该如何扩展?
  • @acme:虽然我认为这无关紧要,但这就是函数的外观:function formatTime(time) { var result = false, m; var re = /^\s*([01]?\d|2[0-3])(:?([0-5]\d))?\s*$/; if ((m = time.match(re))) { result = (m[1].length == 2 ? "" : "0") + m[1] + ":" + (m[2] || "00"); } return result; } console.log(formatTime("11")); BUT console.log(formatTime("110")); 同时给你“01:10”而不是“11:00” ”。您已被警告 ;)
猜你喜欢
  • 1970-01-01
  • 2018-08-22
  • 2021-07-05
  • 2016-02-24
  • 1970-01-01
  • 2023-03-23
  • 2011-06-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多