正则表达式 Visual Studio 一个特定字符

Regex Visual Studio One Specific Character

我正在尝试验证 Visual Studio 中的文本框是字符 M 还是 F。我还进行了一些其他验证,这些验证都以类似的方式设置了正则表达式,它们都可以正常工作。然而,有了这个,它仍然允许我在文本框中使用任何字母。这段代码有什么问题?

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;
}

您的正则表达式不正确。你有:

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

| 符号表示布尔值 OR。因为您没有任何括号来对正则表达式的各个部分进行分组,所以 ^ 仅与 \: 一起使用,而 $ 则单独使用。结果,您的正则表达式匹配以下任何一项:

  • 字符串的开头(^)加上:
  • mM
  • fF
  • 字符串结尾($).

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

正确的正则表达式是:

@"^[mMfF]$"

这匹配字符串的开头 (^),后面紧跟 mMfF 之一,后跟字符串结尾 ($).