我需要一个匹配0到99.999之间的数字的正则表达式(99,999也有效)。
有效示例:
1,1
99.9
12.876
1,777
无效的例子:
9837,83
-12,24
11.1112
答案 0 :(得分:2)
^\d{1,2}(?:[.,]\d{1,3})?$
应该这样做。
<强>解释强>
^ # anchor the match at the start of the string
\d{1,2} # match one or two digits
(?: # optionally match the following group:
[.,] # a . or ,
\d{1,3} # 1-3 digits
)? # end of optional group
$ # anchor the match the end of the string
答案 1 :(得分:2)
如果你想检查一个数字在一定范围内,你不应该使用正则表达式,它与你正在做的事情的逻辑太远了,很难调试。我会先用小数点替换逗号。然后检查范围。
例如(Javascript)
function isValid(inputString)
{
var number=parseFloat(inputString.replace(',','.'));
return (number>=0 && number <=99.999);
}
更新了答案
上述解决方案并未考虑OP要求精度不超过3位小数。
function isValid(inputString){
var number=parseFloat(inputString.replace(',','.'));
validPrecision = true;
if (inputString.split('.')[1]) {
validPrecision=inputString.split('.')[1].length<=3;}
return (number>=0 && number <=99.999 && validPrecision);
};
答案 2 :(得分:1)
这会有用吗?
[0-9]{1,2}[.,][0-9]{1,3}
这匹配类似的东西:
0.0
/ 01,1
99,999
/ 09.009
但不是这样的东西:
.0
/ ,1
/ 1
/ 01
099,999
/ 09.0090
答案 3 :(得分:1)
以下内容可行:
^\d{1,2}((,|.)\d{1,3})?$