如何修复此正则表达式验证方法?

时间:2013-11-10 15:50:57

标签: c# regex validation

我是一名新的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中有以下TextBox:

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

我正在尝试将验证方法与这两个TextBox一起使用,但是,它不起作用,我不这样做:

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

您是否可以帮助我修复/修改此验证方法,以使其能够使用任何TextBox和指定的长度?

2 个答案:

答案 0 :(得分: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匹配输入字符串中零到^个元素的数量。 $和{{1}}确保字符串的开头和结尾。

答案 1 :(得分: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;
        }


    }