2014-03-13 109 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); 
    }