验证javascript十进制数

时间:2010-03-22 20:16:56

标签: javascript jquery regex

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

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

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

5 个答案:

答案 0 :(得分:27)

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

答案 1 :(得分:3)

试试这个:

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

答案 2 :(得分:3)

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

答案 3 :(得分:0)

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

或正则表达式:

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

答案 4 :(得分:0)

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