Potrzebuję wyrażenia regularnego do dopasowania czasu w formacie HH: MM. Oto co mam i to działa:
^[0-2][0-3]:[0-5][0-9]$
Dotyczy to wszystkiego od 00:00 do 23:59.
Jednak chcę to zmienić, aby dopasować również 0:00 i 1:00 itd., A także 00:00 i 01:30. To znaczy, aby skrajna lewa cyfra była opcjonalna, aby dopasować zarówno HH: MM, jak i H: MM.
Jakieś pomysły, jak to zmienić? Potrzebuję tego do pracy w javascript i php.
Odpowiedzi:
Twoje oryginalne wyrażenie regularne ma wady:
04:00
na przykład nie będzie pasować .To może działać lepiej:
źródło
^([0[0-9]|1[0-9]|2[0-3]):[0-5][0-9]$
^(?:\d|[01]\d|2[0-3]):[0-5]\d$
Wyrażenia regularne dotyczące czasu
HH: MM 12-godzinny format, opcjonalnie z początkiem 0
HH: MM 12-godzinny format, opcjonalne 0 wiodące, obowiązkowe południki (AM / PM)
HH: MM 24-godzinne z początkowym 0
HH: MM format 24-godzinny, opcjonalnie z początkiem 0
HH: MM: SS Format 24-godzinny z początkowym 0
Referencje i demo
źródło
^([0-2][0-3]|[0-1][0-9]):[0-5][0-9]+$
?Żadne z powyższych nie działało dla mnie. W końcu użyłem:
Logika:
Pierwsza liczba (godziny) to: liczba między 0 a 19 ->
[0-1]?[0-9]
(dopuszczając liczbę jednocyfrową)lub
liczba między 20 - 23 ->
2[0-3]
druga liczba (minuty) to zawsze liczba z przedziału od 00 do 59 ->
[0-5][0-9]
(nie dopuszczając jednej cyfry)źródło
[01]
działa równie dobrze;)^(0?[1-9]|1[0-2]):[0-5][0-9]$
^([0-1][0-9]|2[0-3]):[0-5][0-9]$
wymusić wiodące zeroMożesz użyć tego 24H, sekundy są opcjonalne
źródło
Najlepiej byłoby, gdyby HH: MM nie podejmował żadnego ryzyka.
źródło
^([0-1]\d|2[0-3]):[0-5]\d$
?O dziwo, okazało się, że w rzeczywistości wszystkie z nich nie do końca go pokrywają, ponieważ nie działają dla krótszego formatu o północy 0: 0, a kilka nie działa również dla 00:00, użyłem i przetestowałem następujące:
źródło
Możesz użyć tego wyrażenia regularnego:
Jeśli chcesz wykluczyć 00:00, możesz użyć tego wyrażenia
Drugie wyrażenie jest lepszą opcją, ponieważ poprawny czas to 00:01 do 00:59 lub 0:01 do 23:59. Możesz użyć dowolnego z nich zgodnie z wymaganiami. Łącze Regex101
źródło
Mecze:
Użyj tego:
źródło
DateTime date1 = new DateTime(2008, 1, 1, 6, 9, 1); Console.WriteLine(date1.ToString("H:mm:ss", CultureInfo.InvariantCulture)); // Displays 6:09:01
. aby uzyskać więcej informacji, zobacz linkJak zapytałeś, najbardziej lewy jest nieco opcjonalny, ja zrobiłem najbardziej lewy i prawy również opcjonalny, sprawdź to
Pasuje do
Link na żywo jest dostępny tutaj
źródło
Możesz użyć następującego wyrażenia regularnego:
źródło
Ogłosić
Ta metoda zwraca wartość „true”, gdy ciąg znaków pasuje do wyrażenia regularnego.
źródło
Niewielka modyfikacja powyższego wkładu Manisha M Demblani dotyczy 4 rano (pozbyłem się sekcji sekund, ponieważ nie potrzebuję jej w mojej aplikacji)
klamki: 4:00 4:00 4:00 4:00 16:00 4:30 itd.
źródło
AM|am|aM|Am|PM|pm|pM|Pm
=[AaPp][Mm]
Poniższe wyrażenie regularne pomoże zweryfikować format hh: mm
źródło
Mój jest:
^(1?[0-9]|2[0-3]):[0-5][0-9]$
To jest znacznie krótsze
Przetestowałem to na kilku przykładach
Mecz:
I nie pasuje do żadnego nieprawidłowego wystąpienia, takiego jak 25:76 itp.
źródło
09:30
nie pasująMożesz spróbować następujących rzeczy
Potrafi wykryć następujące wzorce:
źródło
sprawdź to wzorcowe wyrażenie regularne do wykrywania znaczników czasu, które zbudowałem, aby szukać znacznika czasu określonego przez użytkownika, przykłady tego, co będzie przechwytywać, ale z całą pewnością NIE jest ograniczone;
Odbierze również znacznie więcej, o ile podane czasy zawierają cyfry
źródło
RegExr requires a modern browser. Please update your browser to the latest version and try again.
... Nawet tego nie widzę ...: - /Spróbuj wykonać następujące czynności
Uwaga: przyjąłem silnik regex javascript. Jeśli różni się od tego, daj mi znać.
źródło
Możesz użyć następującego wyrażenia regularnego:
Jedynie dokonana przeze mnie modyfikacja jest opcjonalna. Reszta wyrażenia regularnego jest taka sama.
źródło