2014-03-13 48 views
2

正則表達式/^-?\d*(\.\d+)?$/對正負整數以及小數值都進行了適當的驗證。但我想要正則表達式擴展一點,以解決以下問題:正確數值的驗證

  1. 該值可以是0但不應該是-0。只有當它支持0.1的浮動值而不是負值。
  2. 任何數字都不應以除零整數之外的前導零開始或以0.1開始的十進制數值開始,例如。但不應該有像00或00.01這樣的值。
  3. 驗證空值。

這個想法是確保一個正則表達式完成整個驗證而不是多次檢查。

+0

我是正確的,要禁止負的整數值? –

+1

>這個想法是確保一個正則表達式完成整個驗證,而不是進行多重檢查。 這是個壞主意。幾個簡單的檢查比一個巨大的正則表達式更清晰,更可靠。 –

+0

@alexeyten:OGHaza給出的正則表達式正是我所期待的。 – user850234

回答

1

通過ilmirons嚴重影響回答:

^(0|-?(0\.\d+|[1-9]\d*(\.\d+)?))$ 

RegExr

1

我認爲這應該工作:

/^(0|-?(0.\d+|[1-9]\d*(\.?(\d+))?))$/

+0

[失敗](http://regexr.com?38gjb)一堆案件 – OGHaza

+1

修正,沒有注意到你已經回答。感謝信用:) – ilmirons

0
function isNumber(n) { 
    return !isNaN(parseFloat(n)) && isFinite(n); 
    }