คำตอบที่ "ยอมรับ" สำหรับคำถามนี้มีทั้งไม่ถูกต้องและเป็นสายตาสั้น
ไม่ถูกต้องเนื่องจากจะจับคู่สตริงเช่น0001ซึ่งไม่ใช่ปีที่ถูกต้อง
มันเป็นสายตาสั้นที่จะไม่ตรงกับค่าใด ๆ ที่สูงกว่า 9999 เราลืมบทเรียนของY2K ไปแล้วหรือยัง? ให้ใช้นิพจน์ทั่วไปแทน:
^[1-9]\d{3,}$
หากคุณต้องการจับคู่ปีในอดีตนอกเหนือจากปีในอนาคตคุณสามารถใช้นิพจน์ทั่วไปนี้เพื่อจับคู่จำนวนเต็มบวก:
^[1-9]\d*$
แม้ว่าคุณจะไม่คาดหวังวันที่ในอดีต แต่คุณอาจต้องการใช้นิพจน์ทั่วไปนี้อยู่ดีในกรณีที่มีคนประดิษฐ์ไทม์แมชชีนและต้องการนำซอฟต์แวร์ของคุณกลับไปด้วย
หมายเหตุ: นิพจน์ทั่วไปนี้จะจับคู่ปีทั้งหมดรวมถึงปีก่อนปี 1 เนื่องจากโดยทั่วไปแล้วนิพจน์เหล่านี้จะแสดงด้วยการกำหนด BC แทนที่จะเป็นจำนวนเต็มลบ แน่นอนว่าอนุสัญญานี้อาจเปลี่ยนแปลงได้ในอีกไม่กี่พันปีข้างหน้าดังนั้นตัวเลือกที่ดีที่สุดของคุณคือจับคู่จำนวนเต็มใด ๆ - บวกหรือลบ - ด้วยนิพจน์ทั่วไปต่อไปนี้:
^-?[1-9]\d*$