La respuesta "aceptada" a esta pregunta es incorrecta y miope.
Es incorrecto porque coincidirá con cadenas como 0001
, que no es un año válido.
Es miope en el sentido de que no coincidirá con ningún valor por encima de 9999. ¿Ya hemos olvidado las lecciones del año 2000 ? En su lugar, use la expresión regular:
^[1-9]\d{3,}$
Si necesita hacer coincidir años en el pasado, además de años en el futuro, puede usar esta expresión regular para hacer coincidir cualquier número entero positivo:
^[1-9]\d*$
Incluso si no espera fechas del pasado, es posible que desee utilizar esta expresión regular de todos modos, en caso de que alguien invente una máquina del tiempo y quiera llevarse su software con ellos.
Nota: Esta expresión regular coincidirá con todos los años, incluidos los anteriores al año 1, ya que normalmente se representan con una designación BC en lugar de un número entero negativo. Por supuesto, esta convención podría cambiar en los próximos milenios, por lo que su mejor opción es hacer coincidir cualquier número entero, positivo o negativo, con la siguiente expresión regular:
^-?[1-9]\d*$