function clearNoNum(obj) {
//先把非数字的都替换掉,除了数字和.-
obj.value = obj.value.replace(/(-)?[^\d.]/g, "");
//必须保证第一个为数字而不是.
obj.value = obj.value.replace(/^\./g, "");
//保证只有出现一个.而没有多个.
obj.value = obj.value.replace(/\.{2,}/g, ".");
//保证.只出现一次,而不能出现两次以上
obj.value = obj.value.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");写了这个方法,在input调用,验证正数没有问题,请问如何验证负数呢,?<input type="text" style="width:50px;" onkeyup="clearNoNum(this)" id="test" maxlength="10" value="0.00">
var reg=/-?\d+(\.\d+)?/;
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title>测试</title>
<script type="text/javascript">
function checknum (v) {
var reg = /^-?[1-9]*\d(\.\d+)?$/;
return reg.test(v);
}
function testcase () {
var a = ['0','1',"99","0.1","0.99","-1","-1.","-","-.5","----","aaa","a.0","-00.1","000.1"];
var r = [];
for (var i = a.length - 1; i >= 0; i--) {
r.push(a[i]+" : "+checknum(a[i]));
};
return r.join("\n");
}
alert(testcase());
</script>
</head>
<body>
<div class="page">
<input type="text" name="num" id="num" onblur="if(!checknum(this.value)){alert('err')}">
</div>
</body>
</html>