2013-08-22 67 views
0

我需要驗證EditText值使用正則表達式條件正則表達式檢查Android中的多個條件

  1. 用戶可以輸入的無符號整數
  2. 用戶可以輸入浮點值。

我已經實現了這個使用兩種不同的模式,但我不知道該如何檢查無論是在單正則表達式

我用這個正則表達式如下

public boolean validFloatForString(String value) { 
     String decimalPattern = "([0-9]*)\\.([0-9]*)"; 
     String integerPattern = "([0-9]*)"; 
     boolean match = Pattern.matches(decimalPattern, value) 
       || Pattern.matches(integerPattern, value); 
     System.out.println(match); // if true then decimal else not 
     return match; 
    } 
+0

「正則表達式」REGular表達式。爲什麼你需要一種模式?你能在([0-9] *)之後的任何東西上使用可選標記嗎? –

+0

Edittext ...似乎是Android。不是嗎? – JavaDM

+0

yes在android only @ WEBALDO.at – krishh

回答

1

您的模式String decimalPattern = "([0-9]*)\\.([0-9]*)"將匹配.,而integerPattern將始終匹配。這是因爲*意味着0或更多。 我會使用類似

String pattern = "^([0-9]+(?:\\.[0-9]*)?)"; 

其中無符號整數和浮點匹配。

編輯1

爲了匹配簽名花車,與.

String pattern = "\\b([0-9]+(?:\\.[0-9]*)?|\\.[0-9]+)\\b"; 

我也替代^,這意味着要匹配的字符串的開頭開始,用字邊界\\b

+0

hi @davide其工作正常,但如果假設輸入.xxx,那麼它返回false – krishh

+0

嗨@davide它不工作,如果我輸入。(點)意味着它返回false請幫助我 – krishh

0

如果你是在Android上,你可以使用嵌入的驗證,這和例如設置輸入類型:

EditText text = new EditText(this); 
text.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL); 
0

你可以使用像這樣的東西:^[0-9]+(\\.[0-9]+)?$

以上將確保字符串由一個或多個數字組成,其中可選後跟一個小數點和一個或多個數字。