首页 > 代码库 > javascript正则表达式小数类型

javascript正则表达式小数类型

如果想要阅读和理解一下的,可以读一下。如果只需要结果,直接跳到本文最后。

曾经有需求用javascript正则表达式匹配小数类型,后来自己之前写的也是不能完全正确识别。

后来在网上找了许多,甚至包括一些老外的纯英文论坛什么的,发现都是错的,都不够全面。

常见错误:

1.   /^-?\d+\.\d+$/   http://blog.csdn.net/xxd851116/article/details/4352011

随便一看就知道,如果前面带+则错误,如果没有小数点则错误,如果00.123也不错报等等

2./^[0-9]*[.][0-9]+$/ http://social.msdn.microsoft.com/Forums/en-US/1ffd9265-eafa-4897-b803-39194f35df5d/regular-expression-for-a-float-in-javascript?forum=jscript

与上一个差不多

3. /^\d*+(\.\d+)?$/与上一个同一个页面

看起来有水平了许多,比如考虑到小数点及小数点后的内容可有可没有(即整数也可以,不仅仅是纯小数)

但是小数点前,00.123 也是可以的

不行。

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

也是更好了,比如考虑到了前面的正负号,等,但是同样的小数点前,00.123 也是可以的


不找更多了,大概也就是这样。

-----------

下面是我测试多次的一个写法:

var regExp = /^[+-]?(0|([1-9]\d*))(\.\d+)?$/g;
var b = regExp.test(a);
alert(b);


解释:

^$分别匹配字符串的首尾

[+-]? 表示字符串开头可以有 +或-或没有符号,且有的话只能有一个

0|[1-9]\d* 这是小数点前的整数部分,表示可以为 (一个0 )  或者 (为一个第一位不为0的整数,但第一位以后可以为0)

(\.\d+)? 是指小数点及小数点后面部分,不出现或出现一次

g全部匹配,(好像不是必需的)

因此,完美匹配小数类型。





javascript正则表达式小数类型