sprawdzanie daty - wyrażenie regularne w R

0

Cześć, chcę sprawdzić poprawność daty w R. Niestety nie wiem, dlaczego funkcja grepl zwraca TRUE w tym przypadku? Wydaje mi się, że ta data wcale nie pasuje do wzorca.

date <- "2019-02-249"
grepl("[0-9]{4}-[0-9]{2}-[0-9]{2}", date)
7

Łapie Ci 2019-02-24, jak Dasz od początku do końca: ^[0-9]{4}-[0-9]{2}-[0-9]{2}$, to już nie. A tak w ogóle to nie jest walidacja poprawnej daty.

0

Dzięki! Wiem, że nie jest to idealna walidacja daty, ale w moim przypadku to wystarczy.

4

Nie używaj zapisu [0-9] do dopasowania dowolnej cyfry jeśli nie masz powodu (najczęściej nie masz). Do dopasowania dowolnej cyfry użyj \d. Dzięki temu całe wyrażenie jest krótsze i bardziej czytelne. Wtedy propozycja @lion137 będzie wyglądać tak ^\d{4}-\d{2}-\d{2}$

2

IMHO zamiast wyrażeń regularnych, czytelniej będzie użyć format.Date() tak, jak pokazano w pierwszej odpowiedzi w tym poście:

https://stackoverflow.com/questions/13450360/how-to-validate-date-in-r

1 użytkowników online, w tym zalogowanych: 0, gości: 1