2017-04-13 18 views
0

我想验证Visual Studio中的文本框是字符M还是F.我有一些其他验证正则表达式设置为类似的方式,这些都正常工作。不过,使用这个,它仍然允许我在文本框中使用任何字母。这段代码有什么问题?正则表达式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。由于您没有任何括号可以对部分正则表达式进行分组,因此^仅与\:$一起使用。其结果是,你的正则表达式匹配任何操作:

  • 字符串的字符串(^)加:
  • mM
  • fF
  • 结束的开始( $)。

每个字符串都有一个结尾,所以每个字符串都匹配。

正确的正则表达式是:

@"^[mMfF]$" 

此字符串(^)的开始一致,随后准确的m之一,Mf,或F,其次是字符串的末尾( $)。

+0

完美。谢谢。当时间到期时会标记正确。 –