2011-07-06 74 views
2

嗨我在互聯網上發現,這個正則表達式接受正數^ \ D + $,這不接受任何^ $ 所以沒有我想結合這兩個正則表達式,但沒有成功。我試試這個(^ \ d + $)|(^ $),但這沒有奏效。所以幫我正則表達式,其接受正整數,並沒有什麼 THX很多正則表達式接受正整數和什麼都沒有

+1

針對哪種語言編寫正則表達式? – borrible

+0

java:Pattern.compile(regexp) – hudi

回答

11

簡單地做:

^\d*$ 

*意思是:「零次或多次」。

由於您已經提出了有關Java標記的大部分問題,因此我假設您正在尋找Java解決方案。請注意,在字符串文字中,\需要逃脫!

一個演示:

class Test { 
    public static void main(String[] args) { 
    String[] tests = {"-100", "", "2334", "0"}; 
    for(String t : tests) { 
     System.out.println(t + " -> " + t.matches("\\d*")); 
    } 
    } 
} 

生產:

-100 -> false 
-> true 
2334 -> true 
0 -> true 

注意matches(...)已經驗證了整個輸入字符串,所以沒有必要爲 「錨」 它^$

請注意,對於超過Integer.MAX_VALUELong.MAX_VALUE的數字,它也會返回true。所以即使matches(...)返回true,parseInt(...)parseLong(...)可能會拋出異常!

+0

yae它的工作原理很多 – hudi

+0

@hudi,不客氣。 –

+0

雖然這匹配多個零(「000」)。我使用了不那麼優雅的正則表達式''0 | [1-9] [0-9] *「'來處理這個問題。 –

2

嘗試^[0-9]*$。這一個允許數字,什麼也不是。

1

^\d*$怎麼樣?這將接受一行數字(即一個正整數)本身在一行沒有空白或空行。

相關問題