validationjavascript十进制数

我正在使用以下正则表达式来validation我的javascript文件中的数字:

var valid = (val.match(/^\d+$/)); 

它适用于100,200等整数,但是对于像1.44,4.11等这样的东西,它返回false。 如何更改它,以便接受带小数的数字?

 var valid = (val.match(/^\d+(?:\.\d+)?$/)); 

火柴:

  1 : yes 1.2: yes -1.2: no +1.2: no .2: no 1. : no 

 var valid = (val.match(/^-?\d+(?:\.\d+)?$/)); 

火柴:

  1 : yes 1.2: yes -1.2: yes +1.2: no .2: no 1. : no 

  var valid = (val.match(/^[-+]?\d+(?:\.\d+)?$/)); 

火柴:

  1 : yes 1.2: yes -1.2: yes +1.2: yes .2: no 1. : no 

 var valid = (val.match(/^[-+]?(?:\d*\.?\d+$/)); 

火柴:

  1 : yes 1.2: yes -1.2: yes +1.2: yes .2: yes 1. : no 

 var valid = (val.match(/^[-+]?(?:\d+\.?\d*|\.\d+)$/)); 

火柴:

  1 : yes 1.2: yes -1.2: yes +1.2: yes .2: yes 1. : yes 

试试这个:

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

isNaN对我来说似乎是一个更好的解决方案。

 > isNaN('1') false > isNaN('1a') true > isNaN('1.') false > isNaN('1.00') false > isNaN('1.03') false > isNaN('1.03a') true > isNaN('1.03.0') true 

如果要接受带有可选+或 – 符号的小数(包括<1)和整数,可以使用valid = Number(val)。

或正则表达式:

 valid=/^[+\-]?(\.\d+|\d+(\.\d+)?)$/.test(val); 

!isNaN(text)&& parseFloat(text)== text