Регулярное выражение для проверки правильности времени - PullRequest
15 голосов
/ 20 мая 2009

Может ли кто-нибудь помочь мне построить регулярное выражение для проверки времени?

Допустимые значения: от 0:00 до 23: 59.

Когда время меньше 10:00, оно также должно поддерживать однозначные числа

то есть: это допустимые значения:

  • 9: 00
  • 09: 00

Спасибо

Ответы [ 8 ]

40 голосов
/ 20 мая 2009

Попробуйте это регулярное выражение:

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

Или чтобы быть более четким:

^(?:0?[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$
8 голосов
/ 20 мая 2009

Я не хочу красть чью-то тяжелую работу, но это - именно то, что вы ищете, очевидно.

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);
}
7 голосов
/ 20 мая 2009

Я бы просто использовал DateTime.TryParse ().

DateTime time;
string timeStr = "23:00"

if(DateTime.TryParse(timeStr, out time))
{
  /* use time or timeStr for your bidding */
}
3 голосов
/ 06 июля 2012

Если вы хотите разрешить военный и стандартный с использованием AM и PM (необязательный и нечувствительный), то вы можете указать попробовать.

^(?:(?: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])$ 
1 голос
/ 20 мая 2009

Регулярное выражение ^(2[0-3]|[01]d)([:][0-5]d)$ должно совпадать с 00:00 до 23:59. Не знаю C # и, следовательно, не могу дать вам соответствующий код.

/ RS

0 голосов
/ 27 июля 2016
[RegularExpression(@"^(0[1-9]|1[0-2]):[0-5][0-9]:[0-5][0-9] (am|pm|AM|PM)$", 
                   ErrorMessage = "Invalid Time.")]

Попробуйте это

0 голосов
/ 11 марта 2016
    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;
    }
0 голосов
/ 13 февраля 2015

Лучше !!!

    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;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...