正则表达式Visual Studio一个特定字符
问题描述:
我想验证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;
}
答
您的正则表达式不正确。您有:
@"^\:|m|M|f|F|$"
的|
符号含义布尔OR
。由于您没有任何括号可以对部分正则表达式进行分组,因此^
仅与\:
和$
一起使用。其结果是,你的正则表达式匹配任何操作:
- 字符串的字符串(
^
)加:
-
m
或M
-
f
或F
- 结束的开始(
$
)。
每个字符串都有一个结尾,所以每个字符串都匹配。
正确的正则表达式是:
@"^[mMfF]$"
此字符串(^
)的开始一致,随后准确的m
之一,M
,f
,或F
,其次是字符串的末尾( $
)。
完美。谢谢。当时间到期时会标记正确。 –