<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,但是去掉的话又没办法判断纯整数,我这样写的判断整数或者小数的正则出了什么问题?
正则新手,请大家指导

解决方案 »

  1.   

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

  2.   

    按你的思路应该是这样
    /^\d+$|^\d+\.\d{1,2}$/
    不过,更好的写法是
    /^\d+(\.\d{1,2})?$/
      

  3.   

    正解,最后一个18.1111匹配第一个正则\d+[^\.],所以true
    /^\d+(\.\d{1,2})?$/就可以
      

  4.   

    http://software.intel.com/zh-cn/blogs/2013/10/09/javascript-this/?utm_campaign=CSDN&utm_source=intel.csdn.net&utm_medium=Link&utm_content=others-Javascript