«Принятый» ответ на этот вопрос одновременно неверен и близорук.
Это неверно в том смысле, что он будет соответствовать таким строкам, как 0001
, который не является допустимым годом.
Это близоруко в том смысле, что он не будет соответствовать никаким значениям выше 9999. Неужели мы уже забыли уроки 2000 года ? Вместо этого используйте регулярное выражение:
^[1-9]\d{3,}$
Если вам нужно сопоставить годы в прошлом, в дополнение к годам в будущем, вы можете использовать это регулярное выражение для сопоставления любого положительного целого числа:
^[1-9]\d*$
Даже если вы не ожидаете дат из прошлого, вы все равно можете использовать это регулярное выражение, на всякий случай, если кто-то изобрел машину времени и захочет забрать ваше программное обеспечение с собой.
Примечание. Это регулярное выражение будет соответствовать всем годам, включая годы до 1 года, поскольку они обычно представлены с обозначением BC вместо отрицательного целого числа. Конечно, это соглашение может измениться в течение следующих нескольких тысячелетий, поэтому лучше всего сопоставить любое целое число - положительное или отрицательное - с помощью следующего регулярного выражения:
^-?[1-9]\d*$