如题我想实现 在一个文本框里只能输入1位到3位之间的正整数,其余的替换为空字符串,下面的写法哪里不对呀,一直不出来效果
onkeyup="this.value=this.value.replace(/[^\d{1,3}]/g,'')"
本来不想回的,看到都没有写完整,所以抛砖引玉补充一下,因为他们没有考虑前面为空的情况。
onkeyup="this.value = this.value.replace(/^.*?([1-9]\d{0,2}).*?$/, '$1')"
可以用下面的正则表达式:
.replace(/^(\d{1,3}).*?$/g,'$1')
楼上的答复考虑不严谨,在不以数字开头的情况下没有做任何替换。
楼主的写法是把数字替换成空了,而本意是要把非数字的部分滤掉,所以南辕北辙了。
改成这样写就可以了,还给你考虑了不能是0开头。
onkeyup="this.value = this.value.replace(/^(([1-9]\d{0,2})?).*$/, '$1')"
<input type="text" onkeyup="(function(o){
o.value=o.value.replace(/^(\d{1,3})\w*/g,'$1').replace(/[^\d]+/,'');
})(this)">