【问题标题】:I want regular expression for validating decimal number and doesn't allow value 0.00我想要正则表达式来验证十进制数并且不允许值 0.00
【发布时间】:2012-07-23 08:23:40
【问题描述】:

我正在使用正则表达式来验证十进制或数字 (18,3) 数字, 它确实不允许用户输入超过 1 个小数点以及所有这些

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ErrorMessage="Invalid" ControlToValidate="txtqty"  ValidationExpression="^[-+]?[0-9]*\.?[0-9]*([?[0-9]+)?$" ValidationGroup="save"></asp:RegularExpressionValidator>

但我也想禁止用户输入任何等于 0 的值,例如:

0.00, 0000.00, 00.0, 0...

【问题讨论】:

  • 那么在这种情况下你最好使用自定义验证器
  • 为什么不在页面中添加 RangeValidator?
  • @podiluska 我确实尝试了范围验证器,但在少数情况下它不起作用
  • 范围验证器工作 stackoverflow.com/a/11609617/1445836

标签: asp.net validation textbox


【解决方案1】:

我认为问题在于您使用一个验证器来执行多个任务

划分你的问题:

  • 验证格式

  • 验证特定值

RegularExpressionValidator 之外使用简单的CompareValidator

<asp:CompareValidator ErrorMessage="Value must be grater than 0" ControlToValidate="TextBox1"
    runat="server" Operator="NotEqual" Type="Double" ValueToCompare="0" />

【讨论】:

  • 我们可以编写一个正则表达式来检查这些值。我还在金额字段中使用这种正则表达式以某种方式禁止小数点前的金额:00.00 或 01234.34
  • 我不怀疑。但是维护你的代码将是一个真正的 PITA。当您可以通过简单的关注点分离方法 (SRP) 来简化事情时
【解决方案2】:

"使用以下正则表达式:

^\d[1-9]*(\.\d+)|([0-9])$

它不允许以下模式的值:

00.00,0123.78 i.e value before decimal followed by 0

【讨论】:

    【解决方案3】:

    你可以用这个

    ^([1-9][0-9]*\.[0-9]+)|([0-9]+)$
    

    【讨论】:

      【解决方案4】:
      <asp:RangeValidator ID="RangeValidator1" runat="server" ErrorMessage="Invalid" ControlToValidate="txtqty" MaximumValue="99999" MinimumValue="1.0000" ValidationGroup="save"></asp:RangeValidator>      
      

      范围验证器工作

      【讨论】:

        猜你喜欢
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-16
        相关资源
        最近更新 更多