以 YYYYMMDD 格式驗證日期
通常的做法是使用日期作為字首命名檔案,格式如下:YYYYMMDD
,例如:20170101_results.csv
。可以使用以下正規表示式驗證此類字串格式的日期:
\\d{4}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])
上面的表示式考慮了年份的日期:0000-9999
,介於:01-12
和 days 01-31
之間的月份。
例如:
> grepl("\\d{4}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])", "20170101")
[1] TRUE
> grepl("\\d{4}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])", "20171206")
[1] TRUE
> grepl("\\d{4}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])", "29991231")
[1] TRUE
注意 :它驗證日期語法,但我們可能使用有效語法的日期錯誤,例如:20170229
(2017 年不是閏年)。
> grepl("\\d{4}(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])", "20170229")
[1] TRUE
如果要驗證日期,可以通過此使用者定義的函式完成:
is.Date <- function(x) {return(!is.na(as.Date(as.character(x), format = '%Y%m%d')))}
然後
> is.Date(c("20170229", "20170101", 20170101))
[1] FALSE TRUE TRUE