正则表达式匹配大于十进制值的数字

时间:2018-05-25 13:46:19

标签: regex numbers decimal

我想写的正则表达式必须匹配大于0.01的所有数值,小数点后最多两位数。

为了匹配小数点最多两位数的所有数字,有效的正则表达式为"^\\d+(?:\\.\\d{1,2})?$"

我在互联网上研究过正则表达式大于某些值,但只发现正则表达式大于整数的例子并不相同。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

我不确定这是否完全解决了我无法发表评论的问题,但我认为你可以通过前瞻来过滤掉零问题:(?!0+\.0+$)^\d+(?:\.\d{1,2})?$

答案 1 :(得分:0)

要将大于0.01的数值与小数点后最多两位数相匹配,您可以在字符串的开头使用负前瞻(?!来断言一个或多个零可选的点.零部分直到字符串结尾或字符串以0.01开头才会出现。

^(?!0+(?:\.0+)?$|0+\.01$)\d+(?:\.\d{1,2})?$

例如,这也不匹配00.00.0000000000000

<强>详情

  • ^在行首处断言位置
  • (?!否定前瞻,断言右边的内容不是
    • 0+(?:\.0+)?$将一个或多个零与一个与点和一个或多个零匹配的可选部分匹配并断言该行的结尾
    • |
    • 0+\.01$匹配一个或多个零后跟.01并断言该行的结尾
  • )关闭否定前瞻
  • \d+匹配一个或多个数字
  • (?:\.\d{1,2})?可选部分,匹配点后跟一个或两个数字
  • $断言行尾的位置
相关问题