我有一个相关的问题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
的所有日子,但这显然不优雅。但是,它确实模仿了自由贸易协定接受这个词的方式。
是否可以缩短此正则表达式,可能使用扩展正则表达式?
答案 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!