我正在用java正则表达式挣扎。 我想验证一个数大于零,它不应该是负面的也只有正数的Java正则表达式不包括零
0.00011 - GOOD
1.222 - GOOD
0.000 - BAD
-1.1222 - BAD
所以任何高于零是好的。 这是可能的Java正则表达式?
我正在用java正则表达式挣扎。 我想验证一个数大于零,它不应该是负面的也只有正数的Java正则表达式不包括零
0.00011 - GOOD
1.222 - GOOD
0.000 - BAD
-1.1222 - BAD
所以任何高于零是好的。 这是可能的Java正则表达式?
不要用正则表达式来做这件事。这样做与BigDecimal
:
// True if and only if number is strictly positive
new BigDecimal(inputString).signum() == 1
为什么是正则表达式?
你可以简单地这样做以下
double num=0.00011;
if(num>0){
System.out.println("GOOD");
}else{
System.out.println("BAD");
}
或者,如果您对打要做到这一点硬的方式,你可以尝试一些事情如下太
String num="-0.0001";
char sign=num.split("\\.")[0].charAt(0);
if(sign=='-' || Double.parseDouble(num)==0.0){
System.out.println("BAD");
}else {
System.out.println("GOOD");
}
最好不要解决它使用正则表达式,仍然是解决方案之一如何使用正则表达式解决它:
public static void main (String[] args) throws java.lang.Exception
{
String str = "0.0000";
Pattern p = Pattern.compile("(^-[0-9]+.+[0-9]*)|(^[0]+.+[0]+$)");
Matcher m = p.matcher(str);
if (m.find()) {
System.out.println("False");
}else{
System.out.println("True");
}
}
这里是demo
尝试
^(0\\.\\d*[1-9]\\d*)|([1-9]\\d*(\\.\\d+)?)$
将匹配
0.1
0.01
0.010
0.10
1.0
1.1
1.01
1.010
3
但不
0
0.0
-0.0
-1
-0.1
任何理由使用正则表达式这样做呢? –
我怀疑你正在为此“挣扎”。你能展示你已有的东西吗? – Kobi
@Kobi我的问题与我的其他帖子有关http://stackoverflow.com/questions/18071219/jsf-greater-than-zero-validator由于没有人回答,所以我认为正则表达式会帮助我。但基于下面的答案,我认为我留下了使用自定义验证器。再次感谢您的时间,虽然 –