如何用正则表达式限制只输入整数(包括负整数和0)

这段代码只能限制输入正整数,那位大哥帮忙修改成可以输入负整数咯!谢谢!
<td align="center"><input type="text" size="8" name="xzrk" value="" onkeyup="this.value=this.value.replace(/\D/g,'')" onafterpaste="this.value=this.value.replace(/\D/g,'')"/></td>

this.value.replace(-?[1-9]\d*$,'') 这样改为什么不行呢???

this.value.replace(/-?\d+(\.\d+)?/, '');

同时兼容了小数。

追问

大哥,这个替换功能好像没有起作用,还是可以输入字母啊!你试试!!

追答

哦, 看错了,改成这样:

this.value.match(/[+-]?\d+/g).join('');

会将原始输入中的所有非整数内容(包括小数点,不包括整数前的“+”或“-”号)删除,执行结果示例:

输入“abc-123.45ef--67ghi+890”得到“-12345-67+890”


如果要做到更好的禁止输入不允许字符的效果,建议在keydown事件中进行拦截。

追问

也不知道咋回事,还是不行,但上面那兄弟的代码可以实现!谢谢了啊!

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-20
onkeyup="value=value.match(/^-?[0-9]\d*$/)||value.match(/-?/)"本回答被提问者采纳
第2个回答  2013-05-20
"^-?//d+$"    //整数 只是判断

使用方法: var r = /^/+?[1-9][0-9]*$/;  //正整数
r.test(str);
第3个回答  2013-05-20
<input type="text" id="inp02" onkeypress="return allowInt(event, this);" onafterpaste="handlePaste(this);" onblur="handlePaste(this);" />

<script>
// 使用 onkeypress 事件来处理每一次用户的输入,判断输入的字符是不是符合要求的字符。
function allowInt(e, obj) {
var charCode, char, val=obj.value;
if(typeof e.charCode=='number')
charCode=e.charCode;
else
charCode=e.keyCode;
char=String.fromCharCode(charCode);
// 负号只允许当前文本框没有值的时候才允许输入
if(char=='-' && val.length==0 || /\d/.test(char))
return true;
return false;
}
// 处理粘贴的情况,使用 onblur 来处理
function handlePaste(obj) {
var val=obj.value.replace(/(^\s*)|(\s*$)/g,'');
obj.value=val.replace(/[^-\d]/g, '');
}
</script>