分享一匹配10位加小數2位的正則寫法

朋友問可否用正則協助判斷一串數字,要求如下:

為方便判斷哪個能過哪個不能,後面補上英文的pass / fail 方便快速閱讀

  1. 共10位數字 + 小數點2位
  2. 只有一碼0時,能過 pass
  3. 數字不得為0開頭,但小數的0.XX,能過 pass
  4. 前面沒有0的.XX,要能過 pass
  5. 輸入到一半的數字,如23.(一樣最長10碼),也要能過 pass
  6. 只要超過10碼數字,而無小數點,不能過 fail
  7. 小數只要超過2位,亦不可過 fail

費了一些時間,總算是順利寫出來了!

本例是用JavaScript的正則來寫的,對於開頭的否定用法((?!0))不同語言也許須略做調整!

雖然自己是用不上,但分享給需要的人

1
^((?!0)\d{1,10}|0|\.\d{1,2})($|\.$|\.\d{1,2}$)

可以到regexr(內含本例及測試)來試試是否符合需求,或調整數字長度!