Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

javascript regex validate years in range

I have input field for year and I need a regex for validation it. I have such code: ^([12]\d)?(\d\d)$. But I want allow to validate only years in certain range (1990-2010, for example). How can I do it?

Edit. range must be 1950-2050

like image 976
user1931780 Avatar asked Jul 09 '13 12:07

user1931780


2 Answers

Try this:

1990 - 2010:

/^(199\d|200\d|2010)$/

1950 - 2050:

/^(19[5-9]\d|20[0-4]\d|2050)$/

Other examples:

1945 - 2013:

/^(194[5-9]|19[5-9]\d|200\d|201[0-3])$/

1812 - 3048:

/^(181[2-9]|18[2-9]\d|19\d\d|2\d{3}|30[0-3]\d|304[0-8])$/

Basically, you need to split your range into easy "regexable" chunks:

1812-3048: 1812-1819 + 1820-1899 + 1900-1999 + 2000-2999 + 3000-3039 + 3040-3048
    regex: 181[2-9]    18[2-9]\d   19\d\d      2\d{3}      30[0-3]\d   304[0-8]
like image 52
mishik Avatar answered Nov 18 '22 06:11

mishik


RegExp does not seem to be the right tool here. If you have the year values already isolated surely a simple comparison would work :

if (+yr >= 1990 && +yr <= 2010)

The +yr converts the string to a number

like image 11
HBP Avatar answered Nov 18 '22 06:11

HBP