MikeW
MikeW

Reputation: 4809

How to make this regex allow spaces c#

I have a phone number field with the following regex:

[RegularExpression(@"^[0-9]{10,10}$")]

This checks input is exactly 10 numeric characters, how should I change this regex to allow spaces to make all the following examples validate

1234567890
12 34567890
123 456 7890

cheers!

Upvotes: 9

Views: 26168

Answers (5)

Dominic Cronin
Dominic Cronin

Reputation: 6191

Depending on your problem, you might consider using a Match Evaluator delegate, as described in http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.matchevaluator.aspx

That would make short work of the issue of counting digits and/or spaces

Upvotes: 1

Ria
Ria

Reputation: 10367

Use this simple regex

var matches = Regex.Matches(inputString, @"([\s\d]{10})");

EDIT

var matches = Regex.Matches(inputString, @"^((?:\s*\d){10})$");

explain:

   ^             the beginning of the string

  (?: ){10}      group, but do not capture (10 times):

  \s*            whitespace (0 or more times, matching the most amount possible)

  \d             digits (0-9)

  $              before an optional \n, and the end of the string

Upvotes: 1

ForEveR
ForEveR

Reputation: 55887

Something like this i think ^\d{2}\s?\d\s?\d{3}\s?\d{4}$

There are variants : 10 digits or 2 digits space 8 digits or 3 digits space 3 digits space 4 digits.

But if you want only this 3 variants use something like this

^(?:\d{10})|(?:\d{2}\s\d{8})|(?:\d{3}\s\d{3}\s\d{4})$

Upvotes: 0

Jason Antic
Jason Antic

Reputation: 116

Use this:

^([\s]*\d){10}\s*$

I cheated :) I just modified this regex here:

Regular expression to count number of commas in a string

I tested. It works fine for me.

Upvotes: 1

Eugene Ryabtsev
Eugene Ryabtsev

Reputation: 2301

This works:

^(?:\s*\d\s*){10,10}$

Explanation:

^ - start line
(?: - start noncapturing group
\s* - any spaces
\d - a digit
\s* - any spaces
) - end noncapturing group
{10,10} - repeat exactly 10 times
$ - end line

This way of constructing this regex is also fairly extensible in case you will have to ignore any other characters.

Upvotes: 16

Related Questions