2012-05-10 56 views
3

我需要實現一個輸入過濾器,用於限制1234.35格式的數字輸入。也就是說,在.之前最多四位,並且有兩位小數。我用這regular expression模式:Android中EditText的InputFilter的正則表達式幫助

Pattern.compile("[0-9]{0,4}+((\\.[0-9]{0,2})?)||(\\.)?"); 

這工作,但一旦我在編輯文本輸入一個號碼,並嘗試之前小數位編輯的價值觀,我無法對其進行編輯。我只能刪除它們。

出了什麼問題?

回答

2

基於你說什麼,我認爲它看起來像你想幹什麼,我會用這個正則表達式:

^(\d{0,4})(\.\d{1,2})?$ 

它匹配「0-4數字」有或無「小數點和兩個數字「。如果有小數點,則必須跟隨它一個或兩個數字。例如:512341234.56.2,並且.31都是有效的,並通過表達式匹配,但.1231234.1234.56712345,並.不匹配。

替代地,爲了允許在數字結束小數(如.1234.,等等)時,使用本變形例:

^(\d{0,4})(\.(\d{1,2})?)?$