正規表示式 驗證帶千分號的,帶任意位小數的數字型別

2021-06-22 17:46:36 字數 548 閱讀 2070

想寫乙個正規表示式,驗證帶千分號的,帶任意位小數的數字型別

網上找來找去找到幾個都不行,然後根據下面兩個自己組裝了一下,終於成功:

^[-+]?(\d+(\.\d*)?|\.\d+)[dd]?$          可以帶正負號的,任意位小數的實數

(\d*(,\d)*(.(\d,)*\d+)?)              不帶正負號,可以帶任意位小數的實數,但是有bug,如果給小數寫上千分位,也能通過驗證

第一次優化

^[-+]?(\d*(,\d)*(.(\d,)*\d+)?|\.\d+)[dd]?$     bug依舊

第二次優化

^[-+]?(\d*(,\d)*(.\d+))[dd]?$   bug消除了

最後試了試貌似這樣也可以

^[-+]?(\d*(,\d)*.(\d+)?)

最終解決方案,暫時還沒有發現bug

^[-+]?(\d*(,\d)*.(\d+)?)

2017.1.4

謝謝網友指出的bug,下面是新方案:

^[-+]?\d(,\d)*(\.(\d*))?$

Java將數字轉成帶千分號形式

轉至 將乙個數字轉換為有千分位的格式 numberformat numberformat1 numberformat.getnumberinstance system.out println numberformat1.format 11122.33 結果是11,122.33 numberforma...

帶閏年判斷的正規表示式

xixigongzhu 夕夕公主 首先,你的年的範圍是1800 3999 潤年 1800,1900,2100,2200,2300,2500,2600,2700,2900,3000,3100,3300,3400,3500,3700,3800,3900是個特殊值 能被4整除但不是潤年 要分出來 stri...

帶閏年判斷的正規表示式

xixigongzhu 夕夕公主 首先,你的年的範圍是1800 3999 潤年 1800,1900,2100,2200,2300,2500,2600,2700,2900,3000,3100,3300,3400,3500,3700,3800,3900是個特殊值 能被4整除但不是潤年 要分出來 stri...