对多个文本框进行Regex验证?c#asp.net

本文关键字:验证 Regex c#asp net 文本 | 更新日期: 2023-09-27 17:53:10

编辑2011年5月2日

好的,所以我需要让我的验证客户端,所以我在c#中需要下面要求的东西才能真正在jquery中。我也将验证服务器端,所以我会感谢更多的输入。

原始问题

好吧,我今天真的在进行一次有趣的问题之旅!!!

我之前的问题是针对一个特定的正则表达式。现在我有了它,它起作用了。。如何在多个文本框中展开?我不想使用多个正则表达式验证工具,因为它们会扰乱我的设计空间,我认为这不是一个非常优雅的解决方案(这是一个学位项目(

有没有我可以写的方法?沿着的路线

public validator(string)
{
   doessomething.tostring
   return true/false
}

和访问

if (validator(txtsomething.text.tostring()) = true)
{
  Dothis
}
else
{
  dothis
}

如果我的问题是垃圾,请耐心等待:(感谢``

对多个文本框进行Regex验证?c#asp.net

创建一个自定义控件怎么样?我已经编辑了我的答案,包括jQuery以及服务器端验证。我不知道你在用什么正则表达式,所以我只使用了一个简单的正则表达式来测试字母。

javascript(还包括jQuery文件(:

<script language="javascript" type="text/javascript">
    function validateText(source, args) {
        var allTextFieldsValid = true;
        $(".noNumbers").each(function () {
            if (!/^[a-zA-Z]*$/.test(this.value)) {
                allTextFieldsValid = false;
            }
        });
        args.IsValid = allTextFieldsValid;
    }
</script>

.aspx页面:

// set a specific css class on the textboxes you want to check so that jQuery can
//  find them easily
<asp:TextBox ID="TextBox1" runat="server" CssClass="noNumbers"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server" CssClass="noNumbers"></asp:TextBox>
<asp:Button ID="SubmitButton" runat="server" Text="submit" OnClick="Submit_Click" />
<asp:CustomValidator ID="MyValidator" runat="server" 
        OnServerValidate="Text_Validate" Text="Oops, sorry, no numbers!" 
        ClientValidationFunction="validateText"></asp:CustomValidator>

代码背后:

protected void Submit_Click(object sender, EventArgs e)
    {
        if (Page.IsValid)
        {
            // do stuff
        }
        else
        {
            // do other stuff
        }
    }
    protected void Text_Validate(object source, ServerValidateEventArgs args)
    {
        args.IsValid = true;
    // I've done each textbox by id, but depending on how many you might want to loop through the controls instead
        if (!IsTextValid(TextBox1.Text))
        {
            args.IsValid = false;
        }
        if (!IsTextValid(TextBox2.Text))
        {
            args.IsValid = false;
        }
    }
    private bool IsTextValid(string myTextValue)
    {
        string myRegexString = @"^[a-zA-Z]*$";
        return Regex.IsMatch(myTextValue, myRegexString);
    }

希望这能有所帮助!

我不确定你的确切意图,但你似乎基本上是对的:

每次假设您正在处理"TextBoxChanged"事件,您只需执行以下操作:

if(!string.IsNullOrEmpty(MyTextBox.Text))
{
  if(ValidateInput(MyTextBox.Text)
  { 
    [do stuff here]
  }
  else
  {
    [do other stuff here]
  }
}

然后你的ValidateInput(string stringToCheck)方法看起来像:

private bool ValidateInput(string stringToCheck)
{
    string patern = [your regex patern]
  //Check to make sure that I've got this method call right- you want to make sure
  //that there are matches, basically
    if(Regex.Matches(patern, stringToCheck).Count >= 1) return true;
    return false;
}

然后会说"如果我的正则表达式有任何匹配项,做一件事,如果没有,做其他事情">

好吧,您可以在表单/页面中找到所有文本框控件并应用验证器。

假设您正在使用winforms应用程序,请尝试以下操作:

//。Net Framework 3.5

foreach (TextBox textBox in MyForm.Controls.OfType<TextBox>())
{
    if (validator(textBox.Text) == true)
    {
        // Do this
    }
    else
    {
        // Do that
    }
}

如果有帮助,请告诉我。

PS.:您可能需要为控制容器=/

做一些递归工作

为所有TextBox控件编写事件处理程序:

OnLoad事件处理程序:

  foreach (Control ctrl in Controls) {
    TextBox tbox = ctrl as TextBox;
    if (tbox != null) {
      tbox.TextChanged += new EventHandler(TextBox_TextChanged);
    }
  }
void TextBox_TextChanged(object sender, EventArgs e) {
  TextBox tbox = sender as TextBox;
  if (tbox != null) {
    if (validator(tbox.Text)) {
      // DoThis
    } else {
      // DoThat
    }
  }
}

考虑扩展正则表达式验证器。

开发验证器控制