Wpis z mikrobloga

mirki z #webdev #programowanie #javascript #html
mam zwykłego inputa tekstowego i chciałbym wprowadzić w nim walidację

dd:mm:yyyy hh:mm - ss

gdzie
dd - to numery (dnia)
mm - to miesiac
yyyy - to rok

hh - godzina
mm -minuta
ss - dowolne 2 litery

jak się za to zabrać?
  • 19
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@girlsaddi:
Po pierwsze musisz zrobić wyrażenie regularne aby sprawdzić czy format jest prawidłowy, jak format jest prawidłowy musisz sprawdzić czy dany dzień i miesiąc jest prawidłowy (np. czy ktoś nie wpisał 31 lutego), czy godzina nie jest zbyt duża etc. Czyli najpierw proste wyrażenie sprawdzające czy format jest ok, a następnie rozbijasz sobie wartość na poszczególne wartości np.

//najpierw test czy format jest ok dopiero to co niżej
const [date, time] = val.split('
  • Odpowiedz
@ddiazepam: Skoro format ma być dd:mm:yyyy hh:mm - ss to liczba spacji jest stała i zaznaczyłem, że regex najpierw do testu, no i technicznie można po prostu regexpem wszystko wyciągnąć, ale mi się nie chcę go pisać.
  • Odpowiedz
@girlsaddi: oczywiście to jest bez jakiejś sensownej walidacji bo przejdzie 33:33:33 33:33 - fdd to można oczywiście ogarnąć tylko regex będzie bardziej skomplikowany
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@lobo: do wstępnej walidacji i wyciągnięcia danych niepotrzeba w regexpie zapisywać, żeby miesiąc nie był większy niż 12 i dzień 31.
  • Odpowiedz
@mk321: nie trzeba, ale można i wtedy nie musisz później walidować np. miesiąca albo gdy jest oczywisty błąd w dacie. To są po prostu rzeczy które ułatwiają nieco.
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@lobo: i tak trzeba potem wyliczyć czy dni w danym miesiącu są poprawne, więc bez sensu wcześniej sprawdzać to regexpem.

Dodanie tego do regexpa nic nie daje, a tylko utrudnia czytelność regexpa i powoduje większe ryzyko błędu w nim.
  • Odpowiedz
@mk321: Oczywiście, że daje ten regex który dałem walidacje na dni można by wywalić, ale np. miesiące/godziny/minuty już nie trzeba walidaować.
  • Odpowiedz