0

C# を使用して Visual Studio Windows Form でプロジェクトを行っています。テキストボックス内のデータを検証して、1 つ、2 つ、または 3 つの単語のみを許可しようとしています。現在、私のコードでは 2 つ以上の単語が許可されていますが、1 つの単語だけではありません。また、3 つ以上の単語を防ぐこともできません。誰かが私を助けることができますか?

Regex expression = new Regex(@"[A-Za-z]*[ ]{1}[A-Za-z]*[ ]{1}[A-Za-z]*");
if (!expression.Match(DescriptionTxtBox.Text).Success)
{
    MessageBox.Show("The description should be one, two or three words", "Invalid Format for Description", MessageBoxButtons.OK, MessageBoxIcon.Error);
    DescriptionTxtBox.Clear();
    DescriptionTxtBox.Focus();
    return; 
}
4

2 に答える 2

3

次の正規表現を使用できます

^\s*([a-zA-Z]+\s*){1,3}$

^文字列の開始を示します

$文字列の終わりを示します

{n}正確に n 回一致する量指定子です

{n,}少なくとも n 件の一致

{n,m}n から m までのマッチ

\s空間を表し、に似ています[\n\r\t\f]


IsMatchメソッドを使用する必要があります

于 2013-02-06T06:19:29.137 に答える
0

String.Splitメソッドを使用してデータを分離し、結果の配列が長さ <= 3 であることを確認することを検討しましたか?

このアプローチにより、空の文字列がこのテストに合格できるようになるため、おそらくチェックString.IsNullOrEmptyも行う必要があることに注意してください。

于 2013-02-06T06:14:04.390 に答える