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)
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)
Ł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.
Dzięki! Wiem, że nie jest to idealna walidacja daty, ale w moim przypadku to wystarczy.
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}$
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