Jaki jest wzór RegEx dla DateTime (2008-09-01 12:35:45)?Jaki jest wzór wyrażenia regularnego dla datetime (2008-09-01 12:35:45)?
otrzymuję ten błąd:
No ending delimiter '^' found
Zastosowanie:
preg_match('(?n:^(?=\d)((?<day>31(?!(.0?[2469]|11))|30(?!.0?2)|29(?(.0?2)(?=.{3,4}(1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|(16|[2468][048]|[3579][26])00))|0?[1-9]|1\d|2[0-8])(?<sep>[/.-])(?<month>0?[1-9]|1[012])\2(?<year>(1[6-9]|[2-9]\d)\d{2})(?:(?=\x20\d)\x20|$))?(?<time>((0?[1-9]|1[012])(:[0-5]\d){0,2}(?i:\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$)', '2008-09-01 12:35:45');
daje ten błąd:
Warning: preg_match() [function.preg-match]: Compilation failed: nothing to repeat at offset 0 in E:\www\index.php on line 19
Tylko komentarz, aby powiedzieć, że to wyrażenie nie wykryje, jeśli data, miesiąc lub godzina ma wartość lepszą do maksimum. Na przykład zadziała 2012-65-65 99:99:99. Poza tym regex jest świetny! – darkheir
Zgadzam się, że to nie jest dobre do sprawdzania poprawności daty. –
Wyrażone wyrażenie regularne nie ma na celu potwierdzenia daty. Ma na celu sprawdzenie * składni * ciągu znaków, aby sprawdzić, czy może to być data. Po uzyskaniu wartości można sprawdzić poprawność podanej daty za pomocą normalnych funkcji biblioteki daty. –