La risposta "accettata" a questa domanda è sia errata che miope.
Non è corretto in quanto corrisponderà a stringhe come 0001
, che non è un anno valido.
È miope in quanto non corrisponderà a nessun valore superiore a 9999. Abbiamo già dimenticato le lezioni di Y2K ? Utilizza invece l'espressione regolare:
^[1-9]\d{3,}$
Se è necessario abbinare gli anni nel passato, oltre agli anni nel futuro, è possibile utilizzare questa espressione regolare per trovare qualsiasi numero intero positivo:
^[1-9]\d*$
Anche se non ti aspetti date dal passato, potresti comunque voler usare questa espressione regolare, nel caso in cui qualcuno inventi una macchina del tempo e voglia riportare con sé il tuo software.
Nota: questa espressione regolare corrisponderà a tutti gli anni, inclusi quelli precedenti all'anno 1, poiché sono tipicamente rappresentati con una designazione BC invece di un numero intero negativo. Ovviamente, questa convenzione potrebbe cambiare nei prossimi millenni, quindi l'opzione migliore è quella di abbinare qualsiasi numero intero, positivo o negativo, con la seguente espressione regolare:
^-?[1-9]\d*$