【问题标题】:Regular expression to validate numeric values用于验证数值的正则表达式
【发布时间】:2009-09-17 11:41:06
【问题描述】:

验证文本框的正则表达式,我可以在 asp.net 中输入整数/浮点值

【问题讨论】:

标签: asp.net regex validation


【解决方案1】:

为什么不使用CompareValidator 来验证该值是否为数字?

<asp:TextBox ID="numberTextBox" runat="server" /> 
<asp:CompareValidator ID="validator" runat="server" ControlToValidate="numberTextBox" Operator="DataTypeCheck" Type="Double" ErrorMessage="Value must be a number" />

【讨论】:

    【解决方案2】:
    ^[-+]?[0-9]*\.?[0-9]*([eE][-+]?[0-9]+)?$
    

    将匹配以下(示例):

    3.4
    34.34
    45345
    -34
    .55
    -.45
    -2.2
    1.0e-10
    45.
    1.e308
    

    【讨论】:

      【解决方案3】:

      试试这个:

      ^\d*\.?\d+$
      

      编辑: Fredrik Mörk 提出了极好的建议,以使这种表达具有文化意识。像这样构建表达式字符串:

      String regex = String.Format("^\d*\{0}?\d+$", 
                                   CultureInfo
                                   .CurrentCulture
                                   .NumberFormat
                                   .CurrencyDecimalSeparator);
      

      【讨论】:

      • 您可能希望在选择小数点分隔符时更加动态,以便它也与其他语言环境/文化兼容。
      • 这将不匹配普通的个位数整数。 (即 5)或小于 1 的浮点数。(即 .5)
      • @RC - 此表达式同时匹配“5”和“.5”
      • 是的,它是领先的 \d+ 让你。你怎么能在没有说明你这样做的情况下编辑你的答案?我不是我的,只是好奇?
      • 它也应该匹配负数吗?
      【解决方案4】:

      从各种答案中可以看出,正则表达式会增加不必要的复杂性。 float.TryParse() 会明确告诉您该值是否可以设为浮点数。

      这还考虑了用户机器上的区域设置,而正则表达式不会(或者如果他们尝试会变得丑陋)。

      我会考虑使用类似的东西而不是正则表达式:

      bool isValid = float.TryParse(textbox1.Text);
      

      【讨论】:

      • 我原则上同意,但由于这是客户端输入验证,如果 OP 打算在客户端进行验证,他们可能依赖于使用 JavaScript 中的表达式。
      • 一个很好的观点。没想到。不过我想说的是,无论如何,Javascript 验证都应该由服务器端验证来支持,以防 JS 在客户端被关闭,或者机器人正在发送垃圾邮件请求。
      【解决方案5】:

      代码

      ^[\d.]+$

      匹配字符串中的多个点,如“1.1.1”

      试试

      ^\d+(.\d+)?$

      改为

      您还应该注意,在某些国家/地区使用逗号而不是点。

      【讨论】:

        【解决方案6】:

        ^[-+]?[0-9]*\.?[0-9]+$

        【讨论】:

        • 你需要转义“.”在中间(\.)。现在它匹配任何字符。
        • 感谢您的评论,解析器吃了我的斜线:(
        猜你喜欢
        • 1970-01-01
        • 2020-10-09
        • 1970-01-01
        • 2011-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多