如何在代码库C#ASP.NET中动态设置正则验证表达式

本文关键字:设置 动态 表达式 验证 NET 代码 C#ASP | 更新日期: 2023-09-27 18:21:55

我在验证TextBox1ascx页面中有RegularExpressionValidator

<asp:RegularExpressionValidator ID ="RegularExpressionValidatorStateNumber" runat = "server" ControlToValidate="TextBox1" 
ErrorMessage="Error message" Display ="Dynamic" ValidationExpression=""/>

我需要根据dropdownlist的选择动态更改ValidationExpression

这里我在代码背后做什么:

protected void DropDlSelectedIndexChanged(object sender, EventArgs e)
{        
    string region = DropDl.SelectedItem.Text;            
    RegularExpressionValidatorStateNumber.ValidationExpression = GetRegex(region); 
}

返回正则表达式的函数GetRegex(region)工作正常。但验证不起作用。插入错误数据时,验证器不会显示错误消息。

为什么验证不起作用?或者如何动态设置验证表达式

如何在代码库C#ASP.NET中动态设置正则验证表达式

将错误消息显示为ErrorMessage,而不是Text文本=";不正确的格式"

如果你能给它上色,那也很好:ForeColor=color.Red

使用MATCH,它返回一个在输入字符串中具有所有匹配项的Match对象。当输入文本中存在多个匹配项时,这很有用。以下代码导致多个匹配:

 string region = DropDl.SelectedItem.Text; // @"^(['w]+) (['w]+)$";
 string yourText="abcdxyz"
Match m = Regex.Match(yourText, region , RegexOptions.CultureInvariant);
foreach (Group g in m.Groups)
{
    Console.WriteLine(g.Value);
}

ex0:10位手机号码rgvMobNumber.ValidationExpression="''d{"+iLength+"}";

ex1:rgvPostcode.ValidationExpression=@"^[a-zA-Z0-9''s]{"+txtboxLength+",8}$";ex2rgvPostcode.ValidationExpression=@"^[''s''s]{"+最小长度+","+最大长度+"}$";