My Requirement is that My first two digits in entered number is of the range 00-32.. How can i check this through regex in C#? I could not Figure it out !!`
5 Answers
Do you really need a regex?
int val;
if (Int32.TryParse("00ABFSSDF".Substring(0, 2), out val))
{
if (val >= 0 && val <= 32)
{
// valid
}
}
2 Comments
Vignesh Murugan
But I should Check they are in the range 00-32 na?How can I do that ?Without Regex if it possible also I am ready to implement that...
James
@VigneshMurugan yeah I just realised you asked that, thought you were only interested in them being
int. I have updated for validation.Since this is almost certainly a learning exercise, here are some hints:
- Your rexex will be an "OR"
|of two parts, both validating the first two characters - The first expression part will match if the first character is a digit is 0..2, and the second character is a digit 0..9
- The second expression part will match if the first character is digit
3, and the second character is a digit0..2
To match a range of digits, use [A-B] range, where A is the lower and B is the upper bound for the digits to match (both bounds are inclusive).
Comments
Try something like
Regex reg = new Regex(@"^([0-2]?[0-9]|3[0-2])$");
Console.WriteLine(reg.IsMatch("00"));
Console.WriteLine(reg.IsMatch("22"));
Console.WriteLine(reg.IsMatch("33"));
Console.WriteLine(reg.IsMatch("42"));
The [0-2]?[0-9] matches all numbers from zero to 29 and the 3[0-2] matches 30-32.
This will validate number from 0 to 32, and also allows for numbers with leading zero, eg, 08.
Comments
You should divide the region as in:
^[012]\d|3[012]
1 Comment
Sergey Kalinichenko
That's much better :) You do not need to keep the incorrect part of the answer visible - the edit history would keep it for the curious ones, while the rest should see a nice and clean answer.