日期:2014-05-16  浏览次数:20427 次

求帮忙分析一个判断整数或小数的正则

<script type="text/javascript">
var reg1=/\d+[^\.]|\d+\.\d{1,2}$/;
var ar=[18,18.1,18.11,18.1111];
for(i in ar){
alert(reg1.test(ar[i]));
}
</script>

以上是我的正则,问题是数组的最后一位判断为什么也是true
如果去掉\d+[^\.]|,那么最后一位判断是false,但是去掉的话又没办法判断纯整数,

我这样写的判断整数或者小数的正则出了什么问题?
正则新手,请大家指导

------解决方案--------------------
reg1=/\d+[^\.]
------解决方案--------------------
\d+\.\d{1,2}$/; 
这个正则实际上是用
------解决方案--------------------
分隔的两个正则/\d+[^\.]/和/\d+\.\d{1,2}$/,只要匹配其中一个就行
\d+[^\.]的意思是只要字符串任意位置有一个或一个以上数字,后面跟一个非点(.)字符就能匹配,这显然不对。

------解决方案--------------------
引用:
reg1=/\d+[^\.]
------解决方案--------------------
\d+\.\d{1,2}$/; 
这个正则实际上是用
------解决方案--------------------
分隔的两个正则/\d+[^\.]/和/\d+\.\d{1,2}$/,只要匹配其中一个就行
\d+[^\.]的意思是只要字符串任意位置有一个或一个以上数字,后面跟一个非点(.)字符就能匹配,这显然不对。
正解,最后一个18.1111匹配第一个正则\d+[^\.],所以true
/^\d+(\.\d{1,2})?$/就可以