David Shochet
David Shochet

Reputation: 5375

Regex doesn't work as I need

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

Answers (3)

cadrell0
cadrell0

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

Rob Volgman
Rob Volgman

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

Aghilas Yakoub
Aghilas Yakoub

Reputation: 28970

Modify by using ( Add start and end caracter, ^ and $ caracter)

return Regex.IsMatch(id, "^[0-9]{9,10}$");

Upvotes: 4

Related Questions