2017-04-13 9 views
0

Visual Studioで、文字MまたはFのいずれかのテキストボックスを検証しようとしています。正規表現が正しく動作しているような正規表現を使用して、いくつかのバリデーションを行っています。しかし、これで、それでも私はテキストボックスに任意の文字を使用することができます。このコードで何が問題になっていますか?Regex Visual Studioの特定の文字

public static bool IsGender(string gender) 
{ 
    bool validGender = true; 
    string _genderRegEx = @"^\:|m|M|f|F|$"; 
    if ((!Regex.Match(gender, _genderRegEx).Success)) 
    { 
     MessageBox.Show("Gender must be either M or F."); 
     validGender = false; 
    } 
    return validGender; 
} 

答えて

2

正規表現が正しくありません。あなたは持っている:

@"^\:|m|M|f|F|$" 

|シンボルはブールORを意味します。正規表現の一部をグループ化するための括弧がないため、^\:のみ、$は単独で使用されます。その結果、あなたの正規表現は、次のいずれかに一致:

  • 文字列(^)の開始プラス:
  • mまたはM
  • fまたはF
  • 文字列の末尾( $)。

すべての文字列には終了文字が含まれているため、すべての文字列が一致します。

正しい正規表現は次のようになります

@"^[mMfF]$" 

これは(文字列の最後に続いて、正確mの一つ、Mf、又はF続く列(^)の開始と一致します$)。

+0

パーフェクト。ありがとうございました。時間が経過すると正しいとマークされます。 –

関連する問題