7

次の正規表現を含む電話番号フィールドがあります。

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

これは、入力が正確に 10 文字の数字であることを確認します。この正規表現を変更して、次のすべての例を有効にするためにスペースを許可するにはどうすればよいですか

1234567890
12 34567890
123 456 7890

乾杯!

4

5 に答える 5

15

これは機能します:

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

説明:

^ - 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

この正規表現を作成するこの方法は、他の文字を無視する必要がある場合に備えて、かなり拡張可能です。

于 2012-07-19T03:45:47.810 に答える
1

これを使って:

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

私はだまされました:)私はここでこの正規表現を変更しました:

文字列内のコンマの数を数える正規表現

テストしました。それは私にとってはうまくいきます。

于 2012-07-19T03:53:12.957 に答える
1

問題によっては、http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.matchevaluator.aspxで説明されているように、Match Evaluator デリゲートの使用を検討することもできます。

それは、数字やスペースを数える問題の簡単な作業になります

于 2012-07-20T21:45:04.193 に答える
0

この単純な正規表現を使用してください

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

編集

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

説明:

   ^             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
于 2012-07-19T03:42:03.167 に答える
0

このような何か私は思う^\d{2}\s?\d\s?\d{3}\s?\d{4}$

バリエーションがあります: 10 桁または 2 桁のスペース 8 桁または 3 桁のスペース 3 桁のスペース 4 桁。

ただし、この 3 つのバリアントのみが必要な場合は、次のようなものを使用します

^(?:\d{10})|(?:\d{2}\s\d{8})|(?:\d{3}\s\d{3}\s\d{4})$
于 2012-07-19T03:48:33.833 に答える