Câu trả lời "được chấp nhận" cho câu hỏi này vừa không chính xác vừa không hợp lý.
Nó không chính xác ở chỗ nó sẽ khớp với các chuỗi như 0001
, không phải là năm hợp lệ.
Nó không phù hợp ở chỗ nó sẽ không khớp với bất kỳ giá trị nào trên 9999. Chúng ta đã quên các bài học của Y2K chưa? Thay vào đó, hãy sử dụng biểu thức chính quy:
^[1-9]\d{3,}$
Nếu bạn cần đối sánh các năm trong quá khứ, ngoài các năm trong tương lai, bạn có thể sử dụng biểu thức chính quy này để đối sánh với bất kỳ số nguyên dương nào:
^[1-9]\d*$
Ngay cả khi bạn không mong đợi các ngày trong quá khứ, bạn vẫn có thể muốn sử dụng cụm từ thông dụng này, đề phòng trường hợp ai đó phát minh ra cỗ máy thời gian và muốn lấy lại phần mềm của bạn.
Lưu ý: Biểu thức chính quy này sẽ khớp với tất cả các năm, kể cả những năm trước năm 1, vì chúng thường được biểu diễn bằng ký hiệu BC thay vì số nguyên âm. Tất nhiên, quy ước này có thể thay đổi trong vài thiên niên kỷ tới, vì vậy lựa chọn tốt nhất của bạn là so khớp bất kỳ số nguyên nào — dương hoặc âm — với biểu thức chính quy sau:
^-?[1-9]\d*$