首页 > 代码库 > 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正则表达式小数类型