我需要在PHP中使用正則表達式數小時,我正在使用ereg。我需要它接受1-23而沒有前導零。小時的正則表達式語法
^([1-9])|([1][0-9])|([2][0-3])$
這就是我正在使用,但我無法找到哪裏是錯誤。
我需要在PHP中使用正則表達式數小時,我正在使用ereg。我需要它接受1-23而沒有前導零。小時的正則表達式語法
^([1-9])|([1][0-9])|([2][0-3])$
這就是我正在使用,但我無法找到哪裏是錯誤。
交替(|
)適用於周圍組或全局組中的所有組件,如果不在組中。因此,在您的模式中,^
僅適用於第一種模式,而$
僅適用於最後一種模式。換句話說,您的模式匹配任何以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])$
很好的答案。 :) – Quixrick
謝謝。再次出現問題時,只需在任何地方使用括號即可。 – user3319891
@ user3319891那麼,沒有*會引起更多問題。只要記住以正確的方式使用它們即可:p –
您將要使用'preg'而不是'ereg'。 'ereg'說「從PHP 5.3.0開始,這個函數已經被拒絕了,依賴於這個特性非常令人沮喪。」 – Quixrick