【问题标题】:How to validate a percentage to two decimal places with a Regex?如何使用正则表达式验证百分比到小数点后两位?
【发布时间】:2009-09-14 14:51:50
【问题描述】:

是否有将百分比值验证为小数点后 2 位的正则表达式?

我有一个两位小数的正则表达式,但不知道如何停止超过 100 的值。例如100.01 已使用我的正则表达式进行验证。

【问题讨论】:

  • FWIW - 以您使用的任何语言将图像解析为浮点/双精度,并验证 0 <= x <= 100。恕我直言,正则表达式不是这个钉子的正确锤子。
  • 当我说“图像”时,我的意思是“百分比”。对不起。
  • 我正在使用数据注释正则表达式在 mvc 应用程序中应用验证。
  • Littlechris,我不确定您是否注意到 DVK 回答下的新 cmets。但是,如果您删除开头和结尾的斜杠,它应该对您有用。
  • 谢谢史蒂夫。非常感谢您的帮助!

标签: asp.net regex validation


【解决方案1】:

在 Perl 中:

/(^100([.]0{1,2})?)$|(^\d{1,2}([.]\d{1,2})?)$/

或者如果正好比较 100,你可以添加一个额外的 :)

【讨论】:

  • 做得很好。它适用于我的测试用例...regexhero.net/tester/?id=6807190b-cc82-4dd4-8864-05ce8c0c3b4f
  • 看起来它在提供的链接上工作,但可以让它在我的应用程序中工作。 ASP.Net MVC vlaidation 使用数据注释:[RegularExpression(@"/(^100([.]0{1,2})?)$|(^\d{1,2}([.]\d{1 ,2})?)$/")]
  • @littlechris - 我对 ASP 不是很熟悉,抱歉。您最初问题的标签不是 .net 特定的。如前所述,这是 Perl - 我不确定 .net 的可移植性
  • @littlechris - 尝试删除开头和结尾的正斜杠。它在 .NET 中应该可以正常工作(这就是 Regex Hero 正在使用的)。
  • Duh... 斜杠是 Perl RegEx 运算符。图案在斜线内。很抱歉造成混乱。
【解决方案2】:

这允许除零以外的所有百分比。

^[1-9]{1}[0-9]?(?:\.\d{1,2})?$|^0\.\d{1,2}?$|100

【讨论】:

  • 您应该在表达式末尾添加 ^100$ 而不是 100,否则包含 100 的任何内容都被视为有效,例如100s.23
【解决方案3】:

试试这个:

\d{1,2}\.\d{2}

这会给你一个数字或两位数字,后跟两个小数位。如果你也想允许十分之一(ala 10.1),那么试试这个:

\d{1,2}\.\d{1,2}

【讨论】:

  • 该解决方案缺少值“100”或“100.00”。
  • 杜尔,我一直读到 OP 不想要 100.00。哦,好吧,也许下次……
【解决方案4】:

试试这个(接受 0 到 100 之间的任何值,包括 0.00 和 100.00:

^(100\.00|100\.0|100)|([0-9]{1,2}){0,1}(\.[0-9]{1,2}){0,1}$

【讨论】:

    【解决方案5】:
    ^([0-9]{0,2})(.[0-9]{1,2}){0,1}$|^100$
    

    使用此正则表达式验证 Angular 项目或 javascript 项目中的百分比

    【讨论】:

      【解决方案6】:
      /^(?:100(?:\.0(?:0)?)?|\d{1,2}(?:\.\d{1,2})?)$/
      

      适用于:

      • 100
      • 100.0
      • 100.00
      • 99.99
      • 0.01
      • 5

      等等

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-04
        • 1970-01-01
        • 1970-01-01
        • 2015-08-28
        • 2018-07-16
        • 1970-01-01
        • 2016-03-06
        • 2016-06-10
        相关资源
        最近更新 更多