【发布时间】:2011-01-30 12:35:58
【问题描述】:
我正在使用以下正则表达式来验证我的 javascript 文件中的数字:
var valid = (val.match(/^\d+$/));
它适用于整数,如 100、200 等,但对于 1.44、4.11 等,它返回 false。如何更改它以便也接受带小数的数字?
【问题讨论】:
标签: javascript jquery regex
我正在使用以下正则表达式来验证我的 javascript 文件中的数字:
var valid = (val.match(/^\d+$/));
它适用于整数,如 100、200 等,但对于 1.44、4.11 等,它返回 false。如何更改它以便也接受带小数的数字?
【问题讨论】:
标签: javascript jquery regex
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+)?$
【讨论】:
\d+ 数字设为可选。
如果你想接受小数(包括
或者一个正则表达式:
valid=/^[+\-]?(\.\d+|\d+(\.\d+)?)$/.test(val);
【讨论】:
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
【讨论】:
!isNaN(text) && parseFloat(text) == text
【讨论】: