0

我是一名新的 C# 开发人员,我是Regex第一次使用类。

当我为我的简单项目开发一个验证类时,我正在使用 Regex 开发许多方法来处理用户输入验证。我现在正在努力开发一种方法,该方法将验证用户输入的字符数与从一个文本字段到另一个文本字段不同的有限字符数。

public void ValidateLength(string input, int count)
{
    string regFormat = @"[a-zA-Z]{" + count.ToString() + "}";
    string message = "";

    Regex reg = new Regex(regFormat);
    foreach (var regexMatch in reg.Matches(input))
    {
        message = regexMatch + "The maximum length is" + count;
    }
}

然后,因为我在 ASP.NET 中有以下文本框:

<asp:TextBox ID="txtBox" runat="server"></asp:TextBox>
<asp:TextBox ID="txtBox2" runat="server"></asp:TextBox>

我正在尝试对这两个文本框使用验证方法,但是,它不起作用,我不知道为什么:

Validate validate = new validate();
if(txtBox.Text.toString() != "")
{
   if(validate.ValidateLength(txtBox.Text.toString(), 20)
   {
      //Do this stuff
   }
}

您能帮我修复/修改此验证方法,以使其适用TextBox于用户指定的任何长度吗?

4

2 回答 2

1

我认为你不需要返回长度,你是在里面传递它的人。你知道对吗?

public bool ValidateLength(string input, int count)
{
    string pattern = @"^[a-zA-Z]{0," + count.ToString() + "}$";
    return Regex.IsMatch(input,regFormat);
}

你快到了,你的模式[a-zA-Z]{" + count.ToString() + "}只有在n找到的元素数量不少于n.

所以这里是我更新的{0,n}匹配零到n输入字符串中的元素数。^$确保字符串的开始和结束。

于 2013-11-10T20:37:05.710 回答
0

如果我理解正确,您想验证输入计数。把这个功能改成这个。尝试以下操作:

 public void ValidateLength(string input, int count)
    {
        string message;
        string regFormat = @"[a-zA-Z]{" + count.ToString() + "}";

        Regex reg = new Regex(regFormat);
        Match m = reg.Match(input);
        if (! m.Success)
        {
            message = "The maximum length is" + count;
        }


    }
于 2013-11-10T16:26:37.640 回答