2015-05-27 94 views
-1

有人可以幫助我生成一個正則表達式來檢查輸入的數字是否大於1,這是我試過的:'[1-9] [0-9] | [2-9]',但這不允許我輸入2位以上的數字。我很新進this.Please幫助我..正則表達式來檢查數字是否大於1

+3

當然,它可以用正則表達式完成 - 但爲什麼? – amit

+0

[0-9] <通配符變量的時間> [2-9] 這應該做到這一點,但我同意阿米特,這不是你應該使用正則表達式。 – Stultuske

+1

它實際上用於驗證使用dojo的字段,我需要這個正則表達式。 – lazyCat

回答

1

可以做到這一點與下面的正則表達式:[2-9]|([1-9][0-9]+)

這意味着:2和9之間,或在一個單一的數字:1和9之間的數字後面跟着一個或多個數字。

正則表達式非常強大,有時候人們試圖將它們用於一切。這通常是您不需要正則表達式的示例。只需檢查if (n > 1)比使用正則表達式執行此任務更簡單,更清晰。

+0

這將允許'00'。 –

+0

@AvinashRaj你是對的,修好了。它顯示了爲什麼'if(n> 1)'會更簡單,更不容易出錯...... – Jesper

1

你可以去這樣的事情:

regex = "([2-9][0-9]*|1[0-9]+)" 

代碼:

String regex = "([2-9][0-9]*|1[0-9]+)"; 
    Matcher m = Pattern.compile(regex).matcher(""); 

    m.reset("1"); 
    System.out.println(m.matches()); 
    m.reset("2"); 
    System.out.println(m.matches()); 
    m.reset("10"); 
    System.out.println(m.matches()); 
    m.reset("24"); 
    System.out.println(m.matches()); 
    m.reset("10842"); 
    System.out.println(m.matches()); 

說明:

你基本上有兩種選擇

  1. 該號碼可以以2,3,...,9 - 並有任何數量的數字 後,任何一種:[2-9][0-9]*
  2. 的數量可以從1開始,並且必須具有以下一些數字:1[0-9]+

結合他們得到你的正則表達式。

+0

@nhahtdh謝謝,在代碼中輸入錯誤。 (但解釋確實解釋了它,謝謝你的反饋)。 – amit

1

這將使只有當它大於1

"^(?:[1-9]\\d+|[2-9])$" 

DEMO

0

無論是最後一位必須是大於1或非0數有出現其他位數的數字比最後一個。正則表達式是:

"[2-9]|[1-9][0-9]+" 
相關問題