以 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