0

我正在用 C# 在 Visual Studio Windows 窗体中做一个项目。我试图验证文本框中的数据只允许一个、两个或三个单词。现在我的代码将允许两个或多个单词,但不仅仅是一个单词。它也不会阻止超过 3 个单词。有人能帮我吗?

Regex expression = new Regex(@"[A-Za-z]*[ ]{1}[A-Za-z]*[ ]{1}[A-Za-z]*");
if (!expression.Match(DescriptionTxtBox.Text).Success)
{
    MessageBox.Show("The description should be one, two or three words", "Invalid Format for Description", MessageBoxButtons.OK, MessageBoxIcon.Error);
    DescriptionTxtBox.Clear();
    DescriptionTxtBox.Focus();
    return; 
}
4

2 回答 2

3

您可以使用以下正则表达式

^\s*([a-zA-Z]+\s*){1,3}$

^描述字符串的开头

$描述字符串的结尾

{n}是一个精确匹配 n 次的量词

{n,}至少 n 个匹配项

{n,m}在 n 到 m 个匹配之间

\s代表空间,类似于[\n\r\t\f]


您应该使用IsMatch方法

于 2013-02-06T06:19:29.137 回答
0

您是否考虑过使用该String.Split方法分离出数据,然后简单地检查结果数组的长度是否 <= 3?

请注意,这种方法将允许空字符串通过此测试,因此您可能也应该检查一下String.IsNullOrEmpty

于 2013-02-06T06:14:04.390 回答