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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用正则表达式限制只输入整数(包括负整数和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事件中进行拦截。

追问

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

参考技术A onkeyup="value=value.match(/^-?[0-9]\d*$/)||value.match(/-?/)"本回答被提问者采纳 参考技术B "^-?//d+$"    //整数 只是判断

使用方法: var r = /^/+?[1-9][0-9]*$/;  //正整数
r.test(str);
参考技术C <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>

以上是关于如何用正则表达式限制只输入整数(包括负整数和0)的主要内容,如果未能解决你的问题,请参考以下文章

js正则表达式 判断输入框是不是为正整数或者正整数保留两位小数

js 正则表达式 来控制输入框 只能输入 7位正整数和2位小数,点号只允许输入一次~

自己整理的正则表达式(方便用的时候查看)

大于等于0的正整数正则表达式是啥?

求JS的判断输入数字必须为正整数的正则表达式

常用正则表达式