2012-06-12 195 views
8

我允許用戶從00:00:0023:00:00選擇一小時,並且需要檢查他們是否提交了正確的格式。是否有正則表達式或php函數驗證24小時格式HH:MM:SSPhp驗證24小時時間格式

我發現了一些正則表達式的例子,但我驗證的24小時時間總是設置爲00分鐘和秒。只有小時不一。

例如

18:00:00, 23:00:00, 01:00:00 
+0

用戶可以改變他們的選擇?例如輸入「25:00:00」或「香蕉」? – Zuul

+0

sachleen的答案就是你要求的答案,但如果你真正的問題是爲用戶提供一種輸入00到23之間數字的方法,可以考慮使用下拉菜單。 –

+0

@Zul確定他們可以,他們正在從下拉列表中選擇時間 – CyberJunkie

回答

19

這24小時時間包括秒

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

如果你只想要00分鐘和秒鐘匹配,則

([01]?[0-9]|2[0-3]):00:00 
+0

謝謝!你的代碼會幫助很多人。 – CyberJunkie

+0

我忘了問...以下分隔符對於正則表達式2是否正確? '/ ^([01]?[0-9] | 2 [0-3]):00:00 $ /' – CyberJunkie

+2

'^'表示字符串的開始和字符串的$ $結尾。因此,對於那些人來說,時間可能沒有任何東西。所以,是的,這不僅是可行的,這是正確的做法。 – sachleen

2

嘗試這個

$time="23:00:00"; 

preg_match('#^([01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', $time); 
+0

工程就像一個魅力! (拯救了我的一天)。 –

3

在這裏它的最後一個樣品已準備好使用。

$myTime = '23:00:00'; 

$time = preg_match('#^([01]?[0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?$#', $myTime); 

if ($time == 1) 
{ 
    // make a error! 
} 
else 
{ 
    // make a error! 
} 
1

它是一個RegEx嗎?您可以輕鬆使用PHP strtotime-函數驗證日期和時間(也可以在沒有日期的情況下運行)。 strtotime返回false(在PHP 5.1之前的-1)如果給定時間無效。因此不要忘記使用===操作數!

if (strtotime("12:13") === false) { echo("Wrong Time!"); } // Echos nothing 
if (strtotime("19:45") === false) { echo("Wrong Time!"); } // Echos nothing 
if (strtotime("17:62") === false) { echo("Wrong Time!"); } // Echos 'Wrong Time!' 
0

這對我來說就像一個魅力。

$time = "23:59:60";  
preg_match("/^([0-1][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/", $time) 
相關問題