Joe*_*ang 8 regex date leap-year nsregularexpression
正则表达式应该匹配格式的字符串中的有效日期YYYYMMDD.例如,aaa_20150327_bbb应该匹配但aaa_20150229_bbb不是因为2015年不是闰年.
只有2000年到2099 年才需要考虑.
enr*_*cis 16
以下(基于此答案)可在0到9999之间使用多年.
(?<!\d)(?:(?:(?:1[6-9]|[2-9]\d)?\d{2})(?:(?:(?:0[13578]|1[02])31)|(?:(?:0[1,3-9]|1[0-2])(?:29|30)))|(?:(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))0229)|(?:(?:1[6-9]|[2-9]\d)?\d{2})(?:(?:0?[1-9])|(?:1[0-2]))(?:0?[1-9]|1\d|2[0-8]))(?!\d)
Run Code Online (Sandbox Code Playgroud)
(查看演示)
如果您愿意,可以将其简化为仅在2000年至2099年之间工作多年.
(?<!\d)(?:(?:20\d{2})(?:(?:(?:0[13578]|1[02])31)|(?:(?:0[1,3-9]|1[0-2])(?:29|30)))|(?:(?:20(?:0[48]|[2468][048]|[13579][26]))0229)|(?:20\d{2})(?:(?:0?[1-9])|(?:1[0-2]))(?:0?[1-9]|1\d|2[0-8]))(?!\d)
Run Code Online (Sandbox Code Playgroud)
但正如你所看到的那样,它并不是那么简单.
(查看演示)
为了保持理智,你应该坚持使用一个非常简单的正则表达式,然后使用代码验证它.
(20\d{2})(\d{2})(\d{2})
Run Code Online (Sandbox Code Playgroud)
(查看演示)
| 归档时间: |
|
| 查看次数: |
21240 次 |
| 最近记录: |