我試過了幾個我自己的正則表達式,但總是有一些錯誤或其他。正則表達式在JAVA中用千位分隔符8.2位小數
我的要求是得到8,2十進制的正則表達式,例如, 000,000.00
- 6位整數部分
- 2個位數小數部分
無效的有如下
- 2,2-
- 2,2.2.2
- 12,12
- 1,1,1,1
有效的有如下
- 1,000.00
- 220,000.00
更新: 這從用戶檢查有效的輸入。 小數部分或逗號不是強制性的。
我試過了幾個我自己的正則表達式,但總是有一些錯誤或其他。正則表達式在JAVA中用千位分隔符8.2位小數
我的要求是得到8,2十進制的正則表達式,例如, 000,000.00
無效的有如下
有效的有如下
更新: 這從用戶檢查有效的輸入。 小數部分或逗號不是強制性的。
至多8位之前小數
我想出了一個相當複雜的正則表達式(假設數字具有強制性,
)
^\d{1,3}((?:(?<=\d),(?=\d{3})\d{3})){0,2}(\.\d{2})?$
你可以在上面的正則表達式中添加一個或一個條件來匹配非逗號模式
^(\d{1,3}((?:(?<=\d),(?=\d{3})\d{3})){0,2}|^\d{0,8})(\.\d{2})?$
Java的正則表達式
^(\\d{1,3}((?:(?<=\\d),(?=\\d{3})\\d{3})){0,2}|\\d{0,8})(\\.\\d{2})?$
持續至多6前位十進制使用
^(\d{1,3}((?:(?<=\d),(?=\d{3})\d{3})){0,1}|^\d{0,6})(\.\d{2})?$
它不應該捕獲'222,000,000,123.00'嗎? –
@TamasHegedus直到我對問題的理解,在小數前應該有最多8位數和小數後有2位數 – rock321987
嗯,這就是'8,2'的意思。我想你是對的。 –
試試這個正則表達式:
/^(?:(?:0|[1-9][0-9]{0,2})(?:,[0-9]{3})*(?:\.(?:[0-9]{3},)*[0-9]{1,3})?|[1-9][0-9]*(?:\.[0-9]*)?)$/
您應使用的DecimalFormat格式化數字 – Sanjeev
@ rock321987感謝格式化。 – user1782556
看到答案..這可以嗎? – rock321987