Java 与最大小数点后2位的数字匹配的正则表达式
我正在用java/android编写一个简单的代码 我想创建与以下内容匹配的正则表达式:Java 与最大小数点后2位的数字匹配的正则表达式,java,android,regex,numbers,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
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
但它不匹配没有逗号的数字;我不明白正则表达式有什么问题。您可以使用
^(\d+(?:,\d{1,2})?).*
并替换为$1
。看
详细信息:
-字符串的开头 -^
-捕获组1匹配:(\d+(?:,\d{1,2})
-一个或多个数字\d+
-可选序列:(?:,\d{1,2})
-逗号,
-1或2位数字\d{1,2}
-匹配且未捕获的行的其余部分,因此将被删除*
- 此处:
,{1}
说:正好一个“,”
尝试:
例如。基本正则表达式:
[0-9]+[,]*[0-9]+
如果要指定最小最大长度,请使用:
[0-9]{1,3}[,]*[0-9]{0,2}
仅供参考:别忘了在Java/Android string Literals中加倍反斜杠Hans man它让我摆脱了代码中许多看起来非常难看的if-else语句:)
,{0,1}