2014-03-07 114 views
1

我需要在PHP中使用正則表達式數小時,我正在使用ereg。我需要它接受1-23而沒有前導零。小時的正則表達式語法

^([1-9])|([1][0-9])|([2][0-3])$ 

這就是我正在使用,但我無法找到哪裏是錯誤。

+1

您將要使用'preg'而不是'ereg'。 'ereg'說「從PHP 5.3.0開始,這個函數已經被拒絕了,依賴於這個特性非常令人沮喪。」 – Quixrick

回答

2

交替(|)適用於周圍組或全局組中的所有組件,如果不在組中。因此,在您的模式中,^僅適用於第一種模式,而$僅適用於最後一種模式。換句話說,您的模式匹配任何以1到9之間的數字開始的字符串,其中包含1後跟數字0到9,或以2結尾,然後是0到3之間的數字。

嘗試把不同的選項在一個組:

^([1-9]|1[0-9]|2[0-3])$ 

還要注意,24-hour time從00:00,所以你的模式應該看起來更像是這樣的:

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

還是這個,如果你需要的小時是2位數字:

^([01][0-9]|2[0-3])$ 
+0

很好的答案。 :) – Quixrick

+0

謝謝。再次出現問題時,只需在任何地方使用括號即可。 – user3319891

+0

@ user3319891那麼,沒有*會引起更多問題。只要記住以正確的方式使用它們即可:p –