首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修改regex以匹配序号为"st“、"nd”、"rd“、"th”的日期

修改regex以匹配序号为"st“、"nd”、"rd“、"th”的日期
EN

Stack Overflow用户
提问于 2010-01-23 00:43:44
回答 1查看 3.9K关注 0票数 1

如何修改下面的正则表达式以使日期与日期部分的序号相匹配?此正则表达式匹配"Jan 1,2003 | 2004 -2-29|11-11- 02,3202“,但我还需要它匹配:"Jan -1,2003 |2- 29,2004 |11-11-02,3202 |2010-3-3”

代码语言:javascript
复制
^(?:(((Jan(uary)?|Ma(r(ch)?|y)|Jul(y)?|Aug(ust)?|Oct(ober)?|Dec(ember)?)\ 31)|((Jan(uary)?|Ma(r(ch)?|y)|Apr(il)?|Ju((ly?)|(ne?))|Aug(ust)?|Oct(ober)?|(Sept|Nov|Dec)(ember)?)\ (0?[1-9]|([12]\d)|30))|(Feb(ruary)?\ (0?[1-9]|1\d|2[0-8]|(29(?=,\ ((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)))))))\,\ ((1[6-9]|[2-9]\d)\d{2}))

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2010-01-23 00:56:45

正则表达式做得太多了。您最好使用与您的语言等效的strptime()。但是,下面的正则表达式将匹配序号:

代码语言:javascript
复制
^(?:(((Jan(uary)?|Ma(r(ch)?|y)|Jul(y)?|Aug(ust)?|Oct(ober)?|Dec(ember)?)\ 31(st)?)|((Jan(uary)?|Ma(r(ch)?|y)|Apr(il)?|Ju((ly?)|(ne?))|Aug(ust)?|Oct(ober)?|(Sept|Nov|Dec)(ember)?)\ (0?[1-9]|([12]\d)|30))(st|nd|rd|th)?|(Feb(ruary)?\ (0?[1-9]|1\d|2[0-8]|(29(th)?(?=,\ ((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)))))(st|nd|rd|th)?))\,\ ((1[6-9]|[2-9]\d)\d{2}))

注意,它也会匹配像“20”这样的东西,但在实际数据中遇到它的可能性太低,以至于在大多数情况下都不会去关心它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2118825

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档