我正在用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由於沒有人回答,所以我認爲正則表達式會幫助我。但基於下面的答案,我認爲我留下了使用自定義驗證器。再次感謝您的時間,雖然 –