我的任务是写一个只接受闰年的正则表达式,第一年必须是1584而没有上限。有人可以帮我重做这个expr。 ?
(15(8[48]|9[26]))|((1[6-9]|[2-9]\d)(0[48]|[13579][26]|[2468][048]))|(([2468][048]|16|3579[26])00)
它无效,我做到了:
(15(8[48]|9[26]))|((1[6-9]|[2-9]\d)(0[48]|[13579][26]|[2468][048]))|(([2468][048]|16|3579[26])00)|
(
[1-9]\d*
(
([02468][048]|[13579][26])00
|
\d\d(0[48]|[13579][26]|[2468][048])
)
)
和9996它有效,但当我加1它不接受19996,或100000000或更高,我做错了什么?
例如它不适用于109400
答案 0 :(得分:1)
你的正则表达式匹配从1584年到9996的闰年。
要计算大于9996的闰年,只需在正则表达式的末尾添加此替代方法:
|
(
[1-9]\d*
(
([02468][048]|[13579][26])00
|
\d\d(0[48]|[13579][26]|[2468][048])
)
)
@ user2010564:在正则表达式末尾的单行添加:
|([1-9]\d*(([02468][048]|[13579][26])00|\d\d(0[48]|[13579][26]|[2468][048])))