2017-03-01 117 views
2

我在java/android中編寫簡單的代碼。正則表達式匹配數字與最多2個小數位數

我想創建一個匹配的正則表達式:

0 
123 
123,1 
123,44 

,切片逗號後第二位之後的一切。

我的第一個想法是做這樣的事情:

^\d+(?(?=\,{1}$)|\,\d{1,2}) 

^ - from begin 
\d+ match all digits 
?=\,{1}$ and if you get comma at the end 
do nothin 
else grab two more digits after comma 

,但它並沒有逗號的數字相符;我不明白這個正則表達式有什麼問題。

回答

3

您可以使用

^(\d+(?:,\d{1,2})?).* 

$1取代。請參閱regex demo

詳細

  • ^ - 串的開始 - (\d+(?:,\d{1,2})?) - 捕獲組1個匹配:
    • \d+ - 一個或多個數字
    • (?:,\d{1,2})? - 的可選序列:
      • , - 逗號
      • \d{1,2} - 1或2位數字
  • .* - 一個匹配和不捕獲,並因此將被刪除的行的其餘部分。
+0

供參考:不要忘了在Java/Android的字符串文字中的反斜槓 –

+1

Thans男人就讓我擺脫我的代碼中的很多if-else語句,看起來很醜陋:) –

2

這裏:

,{1} 

說:只有一個 「」

嘗試:

,{0,1} 

例如。

1

基本的正則表達式:[0-9]+[, ]*[0-9]+

如果你想指定最小最大長度使用:

[0-9]{1,3}[, ]*[0-9]{0,2}