用于将数字限制在0.01和1之间的正则表达式-JAVA

用于将数字限制在0.01和1之间的正则表达式-JAVA,java,regex,Java,Regex,我想找到一个正则表达式,它允许值介于0.01和1之间,包括最多两位小数。不允许最大值为0.00、0.0或0。不允许值大于1 eg、1.01、1.1等。我能得到帮助吗?不是一个正则表达式,而是一个返回所需内容的方法。您需要做两件事:范围比较和长度比较,如果范围是满意的 这样, public static boolean isGood(double x){ return x>=0.01 && x<=1.0

我想找到一个正则表达式,它允许值介于0.01和1之间,包括最多两位小数。不允许最大值为0.00、0.0或0。不允许值大于1 eg、1.01、1.1等。我能得到帮助吗?

不是一个正则表达式,而是一个返回所需内容的方法。您需要做两件事:范围比较和长度比较,如果范围是满意的

这样,

public static boolean isGood(double x){
        return x>=0.01 
            && x<=1.0 
            && String.valueOf(x).split("\\.")[1].length()<=2;
}


你说“允许”是指不允许(完全排除),还是要转换长小数

如果排除,则为正则表达式=

 ^(1(\.0?0?)?|0?\.(0[1-9]|[1-9]\d?))$
这也只允许“1”

如果转换,则可以使用if条件和设置刻度的组合,如下所述:

搜索一种好的模式:

^0\[0-9][1-9]$:0.xy,其中x为数字1-9,y为数字0-9 ^0\[1-9]0*$:0.x,其中x是数字1-9,带可选零 ^1\.0{1,2}$|^1$:1 1、1.0、1.00允许的符号之一 ^0\[0-9][1-9]$^0\[1-9]0*$$^1\.0{1,2}$$^1$

使用^和$应处理边缘测试用例:

0
0.0
0.00
0.01 - match
0.1  - match
0.01 - match
0.10 - match 
0.11 - match 
0.1.1
0.11.1
00
00.1.1
1    - match 
1.0  - match
1.00 - match 
1.10
1.11
0.001
0.111

请参见

我们可以问一下,为什么您更愿意在这里使用正则表达式而不是范围比较和if语句?@TimBiegeleisen,因为0.010001是不可接受的,但0.01是可接受的。它只是小数长度和范围比较的组合。我宁愿直接这样做。长度比较和范围比较但0.010001介于0.01和1.00之间。你能澄清一下吗?我不是OP,但我明白,因为OP提到正则表达式中只有2位小数点位是重要的。所以任何超过2个小数位的东西都不能通过正则表达式解析1.5e-1呢?这是允许的输入吗?还包括1\.0{1,2}不要错过1.0和1.00,这很好。您可以删除外括号。我也会删除第一个?,但不清楚是否为1。有效与否,我认为无效-因此删除?。