如何在文本框上使用正则表达式验证器?

3

我有一个文本框需要验证,以便用户可以输入最多四个字符,且它们可以是字母数字。我正在使用VS2003,.NET 1.1。

请告诉我应该使用什么表达式来验证此条件,任何帮助都将非常感谢。谢谢!

我尝试过这样:

<asp:TextBox id="wtxtTPP" tabIndex="2" runat="server" CssClass="text" Width="144px" MaxLength="4" />
<asp:RegularExpressionValidator id="RegularExpressionValidator1" style="z-index: 101; left: 208px; position: absolute; TOP: 16px" runat="server" ErrorMessage="RegularExpressionValidator" ValidationExpression="^([\S\s]{0,4})$" ControlToValidate="wtxtTPP" />
<input style="z-index: 102; left: 88px; position: absolute; top: 72px" type="submit" value="Submit" id="Submit1" name="Submit1" runat="server">

2
为什么要使用已经过时的.NET 1.1?请至少使用.NET 2.0。您可以尝试免费的Visual Studio 2010 Express(支持3.5和4.0)。没有理由继续使用.NET 1.1。 - abatishchev
http://www.aspdotnetkhan.com/RegularExpressionValidator.aspx - Firoz Khan
4个回答

3

正如您所说,使用正则表达式验证器,并将表达式设置为以下内容:

^([\S\s]{0,4})$

请将数字4替换为您所需的最大长度。

更新:

<asp:TextBox id="wtxtTPP" Runat="server" />

<asp:RegularExpressionValidator id="RegularExpressionValidator1" runat="server" 
        ErrorMessage="RegularExpressionValidator" 
        ValidationExpression="^([\S\s]{0,4})$" 
        ControlToValidate="wtxtTPP" />

<asp:Button ID="Button1" runat="server" Text="Button" />

这对我来说很好用。我用一个普通的asp.net按钮替换了你的提交按钮,并简化了所有不必要的内容,以便举例说明。
一般来说,如果您只有一个单行文本框,您可以像您所做的那样使用MaxLength="4"限制文本长度。无需使用验证器。


嗨Remy,我尝试了这样做:<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="RegularExpressionValidator" ControlToValidate="txtTppCode" ValidationExpression="^([\S\s]{1,4})$ "></asp:RegularExpressionValidator> - happysmile
即使在文本框中输入"12as",它也会显示错误消息。 - happysmile

1
       <table>
         <tr>   
           <td>E-mail Address:</td>
           <td>
              <asp:TextBox ID="txt_address" runat="server"></asp:TextBox>
           </td>
           <td>
             <asp:RegularExpressionValidator id="RegularExpressionValidator1" runat ="server" 
              ErrorMessage="Please give Email Address! "
              ControlToValidate="txt_address"
              ValidationExpression="\S+@\S+\.\S+\w+"//example (example@yahoo.com)
              ForeColor="Red" >
             </asp:RegularExpressionValidator>
           </td>
         </tr>
       </table>

    <table>
      <tr>            
        <td>
           <asp:RadioButtonList ID="rbl_gender" runat="server">
            <asp:ListItem>Male</asp:ListItem>
            <asp:ListItem>Female</asp:ListItem>
            </asp:RadioButtonList>
         </td>
         <td>
            <asp:RequiredFieldValidator ID="RequiredFieldVlidator2" runat="server"
            ErrorMessage="Please Choose your Gender" ControlToValidate="rbl_gender"
            ForeColor="Red" >
            </asp:RequiredFieldValidator>
         </td>
       </tr>
   </table>

<table>
   <tr>    
     <td>
         <asp:RequiredFieldValidator ID="RequiredFeildValidator1" 
            runat ="server" ControlToValidate ="txt_name" 
            ErrorMessage="Please Insert Your name !" 
            ForeColor="Red">
         </asp:RequiredFieldValidator>
     </td>
   </tr>    


1

就像 @Remy 所说的。

另外,正则表达式中的 {0,4} 部分表示长度应为零到四个字符,因此允许零长度,即没有输入。如果数字是必填项,请记得使用 RequiredFieldValidator 或将零替换为最小数字位数。


4
实际上,RegularExpressionValidator 在空输入时总是通过验证,就像除 RequiredFieldValidator 之外的所有验证器一样。 - Reid Rankin

0
在验证表达式中进行微小的更改似乎是只有有时工作和可靠工作之间的区别。 以下内容在开发中对我有效,但在生产环境中无效:
<asp:RegularExpressionValidator Display = "Dynamic" ControlToValidate = "tbCarePlan" ID="revCarePlan" ValidationExpression = "^(.{0,4000})$" runat="server" ErrorMessage="Max 4000 characters allowed." />

将上面的ValidationExpression替换为"[\s\S]{0,4000}",现在它可以可靠地工作。省略^和$ - RegularExpressionValidator不需要这个。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接