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

JS 正则表达式问题,保留一位小数,不四舍五入,如果是整数就匹配整数本身.
匹配这样的:保留小数点后一位,不四舍五入~同时允许输入1,2,222,这样的~
就是1,2,234,234.234234,1234.1234
转换成1,2,234,234.2,1234.1
  替换前 > 替换
  1 > 1, 
  2 > 2, 
  2.234 > 2.2 , 
 234.264234 > 234.2 ,

可以说是:整数就是本身,有小数的就是保留一位,不四舍五入
(^\d+\.?\d)原先我自己写的,但是发现不能匹配1,2这个的个数~


------解决方案--------------------
JScript code

<script>
//var a=/^(([0-9])|(1[0-2])|(2[0-3])):[0-5][0-9]$/
//alert(a.test("8:30"))
//var a=/^(([0-9])|(1[0-2])|(2[0-3])):[0-5][0-9]$/
//alert(a.test("0:00"))
//var a=/^(([0-9])|(1[0-2])|(2[0-3])):[0-5][0-9]$/
//alert(a.test("23:59"))
//var b="123.4"
//var c="123.4"
function mm(m){
alert(m.replace(/^((\d+?)(\.?)(\d+?))$/,function (a,b,c,d,e){ if(d=="."){ return c+"."+e.substr(0,1)}else{ return b}  }))
}
mm("123.4545")
mm("123")
</script>

------解决方案--------------------
<script>
var s="1,2,234,234.264234,1234.1234";
alert(s.replace(/(\.\d)\d+/ig,"$1") )//不要四舍五入的
alert(s.replace(/\d+\.\d+/ig,a))//要四舍五入的
function a(v){
return ((v*1).toFixed(1));
}

</script>