2009-05-19 8 views
14

時間を検証するための正規表現を作成するのに役立つ人はいますか?有効な時刻を検証するための正規表現

有効な値は、0:00〜23:59です。

それも一つの文字番号

をサポートする必要があります10:00より少ない時間があるとき、すなわち:

  • 9時00分
  • 午前9時
:これらは有効な値です

ありがとう

+0

申し訳ありませんが試してみてください、私は1つの文字をサポートする最初の番号をしたいと思います。つまり:2:00と02:00 – juan

+0

「00:00」、「01:00」、...有効な値はありますか? – Gumbo

+0

はい、ただし0:00と1:00 – juan

答えて

38

この正規表現を試してください:

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

以上の別個のものにする:

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

どうやら、私は誰のハードワークを盗むためにしたくないけど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); 
} 
1

正規表現^(2[0-3]|[01]d)([:][0-5]d)$は、00:00から23:59に一致する必要があります。 C#を知らないので、関連するコードを与えることはできません。

/RS

7

私はちょうどDateTime.TryParseを使用すると思います()。

DateTime time; 
string timeStr = "23:00" 

if(DateTime.TryParse(timeStr, out time)) 
{ 
    /* use time or timeStr for your bidding */ 
} 
+0

クライアント側の検証用です – juan

2

あなたは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])$ 
0

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; 
    } 
+0

これはなぜ優れていますか?この回答は質問の基準を満たしていないようですか? – roydukkey

+0

ちょうどそれを試してみよう!!!! –

-1
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; 
    } 
+1

あなたの答えに詳細を追加してください。 –

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

私はタイプミスこの

+3

なぜOPは "これを試してください"? **良い答え**は、何が行われたのか、それがOPのためにだけでなく、この質問を見つけるかもしれないあなたの答えを読んでいる将来の訪問者のために、そのように行われた理由について、常に説明します。 –

関連する問題