0

そのため、正規表現で行うすべてのことは、期待どおりに機能しないようです。このステートメントでは、任意の文字を破棄し、最小および最大で 3 桁が必要になると予想していますが、3 桁は必要ありません。確かに文字は許可されていませんが、桁数は何でも構いません。

myReg = new Regex(@"(^[a-z])([0-9]{3,3})*");

^[az] は文字を投げ捨て、[0-9]{3,3} は 3 桁を必要とするはずです。

コードブロック全体を追加することもできますが、考えていませんでした。

userData = phone.Text;

myReg = new Regex(@"(^[a-z])([0-9]{3})+");

        foreach (var validName in myReg.Matches(userData))
        {
            if (myReg.IsMatch(userData))
            {
                phone.Clear();
                badData.Visible = true;
                phone.Focus();
            }
        }
4

5 に答える 5

1

それは一致します

One character that isn't a letter from a to f, stored in a backreference,
followed by zero or more instances of: 
    3 characters that are digits from 0-9
    stored in another backreference.

私はあなたが必要だと思います:^[0-9]{3}+$

これは、次を含む文字列に一致します。

One or more instances of:
    3 characters that are digits from 0-9

代わりに、3 文字以上で完全に数字で構成される文字列が必要な場合は、次を使用できます。^[0-9]+$

于 2012-10-30T18:17:06.087 に答える
1

正確に 3 桁を要求するには、代わりにこれを試してください。

var regex = new Regex(@"^\d{3}$");
于 2012-10-30T18:17:11.327 に答える
0

これを試して:

"(\+?\d{1,5}(?:[\s_-]{0,1}\d{2,4}[\s_-])+)"
于 2012-10-30T18:22:55.137 に答える
0
^(?=.{3,10})([2-9]\d{2,9})
  • ^(?=.{3,10})最初から 3 つ以上 10 以下の項目が必要です。
  • [2-9] 米国の番号は 1 で始まることはできないため、2 ~ 9 の範囲が最初の番号の範囲として許可されていることを確認してください。
  • \d{2,9} さらに 2 つ、最大 9 つの数字が一致する必要があることを示します。
于 2012-10-30T19:44:57.537 に答える
0

* は、任意の数の文字を入れることができることを指定していると思います。「*」を削除して、機能するかどうかを確認してください。

于 2012-10-30T18:17:25.873 に答える