正则表达式不符合年度模式YYYY-01-01的日期

时间:2014-09-19 09:30:35

标签: regex regex-negation

我有一个相关的问题here,使用多个管道shell命令成功回答了问题。但是,我最初提出的问题是:

1900到2XXX之间的生日年份最优雅的正则表达式(POSIX或Extended Regular)是什么,不满足YYYY-01-01

我可以提出类似

的内容
(19|2[01])[0-9][0-9]-(1[012]-[0-9][0-9]|0[^1]-[0-9][0-9]|01-[123][0-9]|01-0[^1])

即,接受从19,20或21开始的所有年份,然后允许每个月> = 10且所有月份> 01,任意一天,最后是01个月01的所有日子,但这显然不优雅。但是,它确实模仿了自由贸易协定接受这个词的方式。

是否可以缩短此正则表达式,可能使用扩展正则表达式?

1 个答案:

答案 0 :(得分:3)

这个怎么样?这会被认为是优雅吗? :P

(19\d{2}|2\d{3})-((?!01-01)\d{2}-\d{2}| )

<强>更新

(19\d{2}|2\d{3})-(?!01-01)\d{2}-\d{2}

试一试here