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 行追加します。

|([1-9]\d*(([02468][048]|[13579][26])00|\d\d(0[48]|[13579][26]|[2468][048])))
于 2013-01-25T10:42:22.957 に答える