0

我的任务是写一个只接受闰年的正则表达式,第一年必须是 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

4

1 回答 1

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])))
于 2013-01-25T10:42:22.957 回答