2012-12-26 24 views
1

我做這個表達式時間正則表達式和下午

^(00|0[0-9]|1[012]):[0-5][0-9]? ((a|p)m|(A|P)M)$ 

但問題是,它是接受 00:00 AM這我不希望是這樣的 怎麼不理? 我想時間是在這種格式 上午12時12分 它不應該在這個 上午12時21 我使用這個代碼進行驗證

 private bool valtime() 
    { 
     Regex regex = new Regex("^(00|0[0-9]|1[012]):[0-5][0-9]? ((a|p)m|(A|P)M)$"); 
     if (regex.IsMatch(textBox1.Text)) 
     { 
      return false; 
     } 
     else 
     { 
      return true; 
     } 
    } 
+2

爲什麼不只是讓你的數字匹配在1小時開始?即'[1-9]'而不是'[0-9]' –

+3

如果你不想接受它,爲什麼你明確地在你的正則表達式的開頭得到了00呢? –

+1

爲什麼'[0-9]'後面有個問號?這樣你可以讓分鐘爲0到5或00到59. – Huluk

回答

5

你可以使用:

Regex.IsMatch(input, @"^(0[1-9]|1[0-2]):[0-5][0-9] [ap]m$", RegexOptions.IgnoreCase);