Regular expression for Year Format

Hi,
I am using VS2010 and C#.Net
I am trying to validate the years entered in a TextBox.
It can be two formats.Ex:2013-2012(fourdigitshyphenfourdigits) or 2009(fourdigits)

I am trying this expression and it is failing for 2011 @"20[01]\d *- *20[01]\d";

The first digit should be Two and second digit is zero and third digit and fourth digit can be any thing 0-9.
I tested for 2013-2012 and it worked fine. But it is not working for 2011.

Thanks
KavyaVSAsked:
Who is Participating?

Improve company productivity with a Business Account.Sign Up

x
 
MazdajaiConnect With a Mentor Commented:
^20\d\d\s?(-\s?20[0-9][0-9])?$

Open in new window

0
 
MazdajaiConnect With a Mentor Commented:
Try
20\d\d(-20\d\d)?

Open in new window

0
 
KavyaVSAuthor Commented:
I tried this and it worked fine.
Please check is there any mistake in it.
20\d\d *(- *20\d\d)?

Thanks
0
Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
MazdajaiCommented:
Not sure why you need the asterisk based on your requirement?

It can be two formats.Ex:2013-2012(fourdigitshyphenfourdigits) or 2009(fourdigits)
The first digit should be Two and second digit is zero and third digit and fourth digit can be any thing 0-9.
0
 
käµfm³d 👽Connect With a Mentor Commented:
I agree. The pattern "20\d\d *(- *20\d\d)?" also accepts the following (probably not what you want):

200000000
20000-2008
20000----------2008
200
200-2008
200--------------2008
0
 
KavyaVSAuthor Commented:
Empty spaces before and after the Hyphen causing the problems.I added space asterisk before and after the hyphen which means 0 or more spaces.
How to validate empty spaces without adding the *.

Thanks
0
 
MazdajaiCommented:
I think we are still unsure what you mean, what is the expected output? You can add \s? to make empty space optional.
20\d\d(\s?-\s?20\d\d)? 

Open in new window

It would be helpful if you can provide expected output.
0
 
KavyaVSAuthor Commented:
I tested the  3 patterns.Three not working.
"20\d\d *(- *20\d\d)?"
"20\d\d(\s?-\s?20\d\d)?"
"20\d\d(-20\d\d)?"
Yes. The pattern "20\d\d *(- *20\d\d)?" accepting the following:
200000000
20000-2008
20000----------2008
200-2008
200--------------2008

And this pattern 20\d\d(\s?-\s?20\d\d)?  also accepts the following:
200000000
20000-2008
20000----------2008
200-2008
200--------------2008

And even this pattern(with out considering empty space before or after hyphen) 20\d\d(-20\d\d)? also accepting the following:
200000000
20000-2008
20000----------2008
200-2008
200--------------2008


I want this:
The entered text in the Text Box can be two formats.Ex:2013-2012(fourdigitshyphenfourdigits) or 2009(fourdigits)


The first digit should be Two and second digit is zero and third digit and fourth digit can be any thing 0-9.
In case if there are optional single empty space before and after hyphen I want to accept it.

Thanks.
0
 
KavyaVSAuthor Commented:
Thanks
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.