1

正規表現を使用して文字のみをチェックしようとしているので、以下の方法を使用しました。問題は、文字の前後に数字がある場合、数字が無視されて何も起こらないことです。それは私がやろうとしていることではありません。私は文字のみをチェックしようとしているので、文字以外のものがあればエラーメッセージが表示されます。文字だけの場合は正常に動作し、数字のみの場合も正常に動作します。問題は、文字と数字がある場合、正しく動作しないことです。それ以外はすべて正常に動作します。

Regex _regex = new Regex("[A-Z]");
Match Instruction_match = _regex.Match(Instruction_Seperator[1]);

if (!Instruction_match.Success) // "A," or "B," or "C,"...etc.
{
     Messagebox.show("Error, Please letters only");
}

Instruction_Seperator[1] は、テキスト ボックスを介してユーザーから取得されることに注意してください。ユーザーは、文字の前にも文字の後にも何も入力しないでください。文字や数字を入力してもメッセージ ボックスが表示されない理由がわかりません。

返信をお待ちしております:)

ユーザーがエラーをポップアップ表示する特定のサイズを設定できますか。たとえば、ユーザーが 3 つのラテン文字しか入力できず、他には何も入力できない場合、正規表現に長さの制約がありますか :)

4

4 に答える 4

1

パターンを次のように変更します。

Regex _regex = new Regex("^[A-Z]+$");
于 2013-06-14T15:23:08.160 に答える
0

1 文字だけを一致させたいと想定しているため、一致する文字列は次の例の "D" だけです。任意の数の単語が必要な場合は、^[AZ]+$ を使用します。

var patterns = new string[] { "12ABC", "D", "A","AB","ABC","A2B3","A1BC", "A123", "123ABC12" };
var regex = new Regex(@"^[A-Z]{1,3}$");
foreach (var pattern in patterns)
{
    var isMatch = regex.Match(pattern);
    if (isMatch.Success)
    Console.WriteLine("Found Matching string {0}", pattern);
}

変更されたコードを見てください。あなたの質問に対する変更は、正規表現パターンに {1,3} を追加することです。これは、ラテン語の単語が最大 3 回出現することを意味します。

于 2013-06-14T15:34:32.757 に答える