"Прийнята" відповідь на це питання є одночасно неправильною і короткозорою.
Невірно, що він буде відповідати рядкам типу 0001
, що не є дійсним роком.
Це короткозоро, оскільки воно не буде відповідати жодним значенням вище 9999. Ми вже забули уроки Y2K ? Натомість використовуйте регулярний вираз:
^[1-9]\d{3,}$
Якщо вам потрібно збігти роки минулого, окрім років майбутнього, ви можете використати цей регулярний вираз для відповідності будь-якому додатному цілому числу:
^[1-9]\d*$
Навіть якщо ви не очікуєте дат минулого, ви все одно можете використовувати цей регулярний вираз, на всякий випадок, якщо хтось винайде машину часу і захоче взяти з собою ваше програмне забезпечення.
Примітка: Цей регулярний вираз буде відповідати всім рокам, включаючи ті, що були до 1 року, оскільки вони, як правило, представлені позначенням BC замість цілого від'ємного числа. Звичайно, ця конвенція може змінитися протягом наступних кількох тисячоліть, тому найкращим варіантом є відповідність будь-якого цілого числа - позитивного чи негативного - з таким регулярним виразом:
^-?[1-9]\d*$