【问题标题】:RegularExpressionValidator in asp.net not working for 1 or 2 digit numberasp.net 中的 RegularExpressionValidator 不适用于 1 位或 2 位数字
【发布时间】:2017-08-25 18:47:28
【问题描述】:

我已阅读有关 RegularExpressionValidator 的其他问题的其他答案,但它们没有帮助。我正在开发一个 ASP.NET C# 应用程序,并且我有一个需要是 1 位或 2 位数字的文本字段。这是控件:

<asp:TextBox 
    ID="Hunt_Daily_Sitting_hrs" 
    runat="server" 
    class="form-control" 
    placeholder="hours" 
    type="number"></asp:TextBox>

正如所写,即使它指定 type="number",它也允许使用数学运算符。所以人们一直在输入“6-8”,就像“6到8小时”一样。在this 页面上,正则表达式 ^\d{1,2}$ 标记了这样的条目。但是,在我的应用程序中,该行

<asp:RegularExpressionValidator 
    ID="HuntSitRegexp" 
    Display="Dynamic" 
    ControlToValidate="Hunt_Daily_Sitting_hrs" 
    ValidationExpression="^\d{1,2}$" 
    runat="server" 
    ErrorMessage="Please enter a number from 1-24" 
    Font-Size="Large" 
    ForeColor="Red" />

没有。立即标记 3 位数字,但不会立即标记诸如“6-8”之类的条目。但是,诸如“6-8”之类的条目确实无法提交,因为“提交”按钮不执行任何操作,表明 Javascript 验证失败。所以用户会想,“表单有什么问题?它不会提交,但没有错误消息。”

【问题讨论】:

  • 为什么不使用带有数字 1-24 的下拉菜单而不是文本框?
  • 听起来您需要修复您的网页,以便它显示验证器错误消息。
  • 它确实显示了验证器错误消息。例如,它显示三位数的错误消息。它只是不显示一个或两个数字和一个数学运算符。
  • 如果你想让正则表达式工作,我认为你需要将type="number" 更改为type="text"
  • @WiktorStribiżew,你能把这个改成答案吗?

标签: javascript c# asp.net regex


【解决方案1】:

ValidationExpression="^\d{1,2}$" 很好,但没有为number 类型的输入启用正则表达式检查。

因此,您需要将asp:TextBox 控件type="number" 更改为type="text"

【讨论】:

    【解决方案2】:

    试试这个 Reg Ex

    ^[0-9]{1,2}$
    

    【讨论】:

      【解决方案3】:

      我认为改变类型的答案是正确的。 但是,我注意到您的 ValidationExpression="^\d{1,2}$"
      和 ErrorMessage="请输入一个 1-24 的数字" 不符合。它需要任何 1-2 位数字。

      只匹配数字 1-24 的正则表达式如下:^(\d)$|^(1\d)$|^(2[0-4])$

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-06-10
        • 1970-01-01
        • 1970-01-01
        • 2017-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多