Reputation: 5375
I need to validate an account number. It is supposed to have only digits and have 9 or 10 characters. I tried this:
return Regex.IsMatch(id, "[0-9]{9,10}");
But this is not working correctly, as it returns true in case the number is "1234567890blah". Could you please help, as I am not that good with regex?
Thanks.
Upvotes: 4
Views: 622
Reputation: 17307
This is the problem with regex. There are simpler and clearer solutions.
string acct = "1234567890";
long temp;
return (acct.Length == 9 || acct.Length == 10)
&& long.TryParse(acct, out temp);
Upvotes: 2
Reputation: 2114
You need to indicate that the digits must be the entire string. Put ^
at the start to indicate that it must be the start of the string and $
to indicate that it must be the end.
return Regex.IsMatch(id, "^[0-9]{9,10}$");
See Regular Expression Anchors for more details.
Upvotes: 8
Reputation: 28970
Modify by using ( Add start and end caracter, ^ and $ caracter)
return Regex.IsMatch(id, "^[0-9]{9,10}$");
Upvotes: 4