正则表达式匹配数字,最多2位小数

时间:2017-03-01 10:03:18

标签: java android regex numbers

我在java / android中编写一个简单的代码。

我想创建匹配的正则表达式:

0
123
123,1
123,44

并在逗号后的第二位数后切片。

我的第一个想法是做那样的事情:

^\d+(?(?=\,{1}$)|\,\d{1,2})

 ^ - from begin
 \d+ match all digits
 ?=\,{1}$ and if you get comma at the end
 do nothin
 else grab two more digits after comma

但是没有逗号就不匹配数字;而且我不明白正则表达式有什么问题。

3 个答案:

答案 0 :(得分:4)

您可以使用

^(\d+(?:,\d{1,2})?).*

并替换为$1。请参阅regex demo

<强>详情:

  • ^ - 字符串的开头 - (\d+(?:,\d{1,2})?) - 捕获第1组匹配:
    • \d+ - 一个或多个数字
    • (?:,\d{1,2})? - 可选序列:
      • , - 逗号
      • \d{1,2} - 1或2位数字
  • .* - 匹配且未捕获的其余行,因此将被删除。

答案 1 :(得分:2)

下面:

,{1}

说:恰好是一个&#34;,&#34;

尝试:

,{0,1}

例如。

答案 2 :(得分:1)

基本正则表达式:[0-9]+[, ]*[0-9]+

如果您想指定最小最大长度,请使用:

[0-9]{1,3}[, ]*[0-9]{0,2}