„Zaakceptowana” odpowiedź na to pytanie jest zarówno niepoprawna, jak i krótkowzroczna.
Niepoprawne jest to, że dopasowuje ciągi, takie jak 0001
, który nie jest prawidłowym rokiem.
Jest krótkowzroczny, ponieważ nie będzie pasował do żadnych wartości powyżej 9999. Czy już zapomnieliśmy o lekcjach z roku 2000 ? Zamiast tego użyj wyrażenia regularnego:
^[1-9]\d{3,}$
Jeśli chcesz dopasować lata z przeszłości, a nie tylko lata w przyszłości, możesz użyć tego wyrażenia regularnego do dopasowania dowolnej dodatniej liczby całkowitej:
^[1-9]\d*$
Nawet jeśli nie spodziewasz się dat z przeszłości, i tak możesz chcieć użyć tego wyrażenia regularnego, na wypadek gdyby ktoś wynalazł wehikuł czasu i chciał zabrać ze sobą twoje oprogramowanie.
Uwaga: to wyrażenie regularne będzie pasowało do wszystkich lat, w tym przed rokiem 1, ponieważ są one zwykle przedstawiane jako BC zamiast ujemnej liczby całkowitej. Oczywiście ta konwencja może się zmienić w ciągu następnych kilku tysiącleci, więc najlepszym rozwiązaniem jest dopasowanie dowolnej liczby całkowitej - dodatniej lub ujemnej - za pomocą następującego wyrażenia regularnego:
^-?[1-9]\d*$