如何使用基于下拉列表选择的正则表达式验证文本框
本文关键字:正则表达式 验证 文本 选择 何使用 下拉列表 | 更新日期: 2023-09-27 18:19:23
我想验证基于正则表达式下拉列表的文本框。我想根据下拉列表选择的信用卡类型验证信用卡号码。
下面是我的代码示例:
<table runat="server">
<tr>
<td><asp:Label ID="Label4" runat="server" Text="Credit Card Type"></asp:Label></td>
<td><asp:DropDownList ID="DropDownList1" runat="server">
<asp:ListItem Text="Visa" Value="Visa"></asp:ListItem>
<asp:ListItem Text="MasterCard" Value="Mastercard"></asp:ListItem>
</asp:DropDownList></td>
</tr>
<tr>
<td><asp:Label ID="Label1" runat="server" Text="Card Number"></asp:Label></td>
<td><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></td>
<td><asp:CustomValidator ID=CustomValidator1 runat="server" ErrorMessage="Incorrect card, please re-renter!" ControlToValidate="TextBox1" Display="Dynamic" ForeColor="Red" OnServerValidate="CustomValidator1_ServerValidate"></asp:CustomValidator></td>
</tr>
<tr>
<td><asp:Button ID="Button1" runat="server" Text="Submit" CommandName="Submit"/></td>
</tr>
</table>
和其他代码:
protected void CustomValidation1_ServerValidate(object Source, ServerValidateEventArgs args)
{
string expression = "";
switch (DropDownList.SelectedValue)
{
case "Visa":
expression = "^(4)([0-9]{15})$";
break;
case "MasterCard":
expression = "^(5[1-5])([0-9]{14})$";
break;
}
}
所以当我在下拉列表中选择MasterCard
并在文本框中输入数字时。我想用正则表达式^(5[1-5])([0-9]{14})$
进行验证。当我在Dropbox List上选择Visa
并在文本框中输入数字时,它将用^(4)([0-9]{15})$
的表达式进行验证。
万事达卡:
匹配:5212345678901234
不匹配:1234567890123456
你可以这样做:
您将需要在textbox
的末尾添加regular expression validator
而不是custom validator
,并且使用drop down list
的代码过程,使用if语句将允许更改持久化。此外,您的drop down list
需要执行Auto Post Back
设置到True
,以允许发生更改。
下面是你的问题的理想代码:
protected void DropDownList1_OnIndexChanged(object Source, EventArgs args)
{
if (DropDownList.SelectedItem.Text == "Visa")
{
RegularExpression1.ValidationExpression = "^(4)([0-9]{15})$";
else
RegularExpression1.ValidationExpression = "^(5[1-5])([0-9]{14})$";
}
}
我会这样做:
声明2个regexpvalidator,一个用于VISA-Regex,另一个用于MasterCard-Regex。在后面的代码中声明OnSelectedIndexChanged
- DropDownList
的方法。在此方法中,基于DropDownList
的SelectedValue
启用正确的验证器,并禁用另一个。