代码之家  ›  专栏  ›  技术社区  ›  juan

用于验证有效时间的正则表达式

  •  15
  • juan  · 技术社区  · 17 年前

    有人能帮我建立一个正则表达式来验证时间吗?

    有效值为0:00到23:59。

    当时间小于10:00时,还应支持一个字符数

    ie:这些是有效值:

    • 9:00
    • 09:00

    谢谢

    8 回复  |  直到 8 年前
        1
  •  39
  •   Gumbo    17 年前

    尝试此正则表达式:

    ^(?:[01]?[0-9]|2[0-3]):[0-5][0-9]$
    

    或者更清楚地说:

    ^(?:0?[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$
    
        2
  •  7
  •   Nick Presta    17 年前

    我不想偷别人的辛勤劳动,但是 this 显然,这正是你想要的。

    using System.Text.RegularExpressions;
    
    public bool IsValidTime(string thetime)
    {
        Regex checktime =
            new Regex(@"^(20|21|22|23|[01]d|d)(([:][0-5]d){1,2})$");
    
        return checktime.IsMatch(thetime);
    }
    
        3
  •  7
  •   cdonner    10 年前

    我只使用datetime.typarse()。

    DateTime time;
    string timeStr = "23:00"
    
    if(DateTime.TryParse(timeStr, out time))
    {
      /* use time or timeStr for your bidding */
    }
    
        4
  •  3
  •   roydukkey    8 年前

    如果你想允许 军事的 标准 随着使用 调幅和调幅 (可选且不敏感),那么您可能需要尝试一下。

    ^(?:(?:0?[1-9]|1[0-2]):[0-5][0-9]\s?(?:[AP][Mm]?|[ap][m]?)?|(?:00?|1[3-9]|2[0-3]):[0-5][0-9])$ 
    
        5
  •  1
  •   Dave New    13 年前

    正则表达式 ^(2[0-3]|[01]d)([:][0-5]d)$ 应该是00:00到23:59。不知道C,因此无法提供相关代码。

    遥感

        6
  •  0
  •   quadroid    9 年前
    [RegularExpression(@"^(0[1-9]|1[0-2]):[0-5][0-9]:[0-5][0-9] (am|pm|AM|PM)$", 
                       ErrorMessage = "Invalid Time.")]
    

    试试这个

        7
  •  -1
  •   Percy Gutierrez    11 年前

    更好!!!!

        public bool esvalida_la_hora(string thetime)
        {
            Regex checktime = new Regex("^(?:0?[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$");
            if (!checktime.IsMatch(thetime))
                return false;
    
            if (thetime.Trim().Length < 5)
                thetime = thetime = "0" + thetime;
    
            string hh = thetime.Substring(0, 2);
            string mm = thetime.Substring(3, 2);
    
            int hh_i, mm_i;
            if ((int.TryParse(hh, out hh_i)) && (int.TryParse(mm, out mm_i)))
            {
                if ((hh_i >= 0 && hh_i <= 23) && (mm_i >= 0 && mm_i <= 59))
                {
                    return true;
                }
            }
            return false;
        }
    
        8
  •  -1
  •   Jiří Sedlák    10 年前
        public bool IsTimeString(string ts)
        {
            if (ts.Length == 5 && ts.Contains(':'))
            {
                int h;
                int m;
    
                return int.TryParse(ts.Substring(0, 2), out h) &&
                       int.TryParse(ts.Substring(3, 2), out m) &&
                       h >= 0 && h < 24 &&
                       m >= 0 && m < 60;
            }
            else
                return false;
        }