我使用正則表達式如下驗證格式dd/mm/yyyy
日期在PHP中:PHP:時間驗證RegEx?
preg_match("/([0-9]{2})\/([0-9]{2})\/([0-9]{4})/", $e_startdate, $matches)
但是這將是驗證時間,格式爲10:20 PM
或AM
的正則表達式。我想要一個正則表達式來驗證以下格式。
<number><number><colon><number><number><space><AM or PM>
感謝
我使用正則表達式如下驗證格式dd/mm/yyyy
日期在PHP中:PHP:時間驗證RegEx?
preg_match("/([0-9]{2})\/([0-9]{2})\/([0-9]{4})/", $e_startdate, $matches)
但是這將是驗證時間,格式爲10:20 PM
或AM
的正則表達式。我想要一個正則表達式來驗證以下格式。
<number><number><colon><number><number><space><AM or PM>
感謝
以下應驗證您請求的格式:
preg_match("/(\d{2}):(\d{2}) (AM|PM)/", $e_startdate, $matches);
注意這不一定是有效的時間。你可能輸入像32:62 AM之類的東西。你需要這樣的時間驗證:
preg_match("/(0?\d|1[0-2]):(0\d|[0-5]\d) (AM|PM)/i", $e_startdate, $matches);
心靈匹配整個事情不區分大小寫(就像我在第二個例子中所做的那樣)。否則小寫am
,pm
等都不會起作用。
您可以使用正則表達式:
(0[0-9]|1[0-2]):[0-5][0-9] [AP]M
前面0應該是可選的,以接受在格式'上午1點23分的時間「而這將接受'00:00 AM」或' 00:49 PM'這是非法的。 '(0 [1-9] | [1-9] | 1 [0-2]):[0-5] [0-9] [AP] M'應該爲那些人工作。 – 2010-10-20 08:58:02
如果你可以解釋,我沒有得到這個部分'(0 [0-9] | 1 [0-2])'這意味着什麼。謝謝! – Prashant 2010-10-20 09:01:20
@Prashant:意思是'0 [0-9]'或'1 [0-2]'。 '0 [0-9]'表示後面跟着任意數字的'0'。 '1 [0-2]'表示'1',後面是'0或1或2'。 – codaddict 2010-10-20 09:03:04
/\ d {2}:\ d {2}(AM | PM)/
我從難以捉摸的答案開始,但需要更多的靈活性。這一個使分鐘可選,以及AM/PM
/(0?\d|1[0-2])(:(0\d|[0-5]\d))?[ ]?(A|P)M/i
我想只接受12小時的格式,所以你的regex'/(0?\ d | 11 | 12):(0 \ d | [0-5] \ d)(AM | PM)/ i' this只會接受12小時格式的權利? – Prashant 2010-10-20 09:12:53
@Prashant:那就對了。這將僅匹配12小時格式。 – jwueller 2010-10-20 09:13:30
@elusive:將它與preg_match匹配後,我會在'$ matches'變量中得到什麼?我需要HH MM和AM | PM作爲'$ matches'變量中單獨的數組元素嗎? – Prashant 2010-10-20 09:14:59