首页 新闻 搜索 专区 学院

大家看看这个正则有什么问题,为什么匹配不出来呢?

0
悬赏园豆:5 [已解决问题] 解决于 2016-04-09 20:00

如题我想实现  在一个文本框里只能输入1位到3位之间的正整数,其余的替换为空字符串,下面的写法哪里不对呀,一直不出来效果

 onkeyup="this.value=this.value.replace(/[^\d{1,3}]/g,'')"

liuscien的主页 liuscien | 初学一级 | 园豆:192
提问于:2016-04-07 18:47
< >
分享
最佳答案
0

本来不想回的,看到都没有写完整,所以抛砖引玉补充一下,因为他们没有考虑前面为空的情况。

onkeyup="this.value = this.value.replace(/^.*?([1-9]\d{0,2}).*?$/, '$1')"

收获园豆:2
上帝之城 | 老鸟四级 |园豆:2469 | 2016-04-07 23:27
其他回答(3)
1

可以用下面的正则表达式:

.replace(/^(\d{1,3}).*?$/g,'$1')
收获园豆:1
dudu | 园豆:37106 (高人七级) | 2016-04-07 20:07
0

楼上的答复考虑不严谨,在不以数字开头的情况下没有做任何替换。

楼主的写法是把数字替换成空了,而本意是要把非数字的部分滤掉,所以南辕北辙了。

 

改成这样写就可以了,还给你考虑了不能是0开头。

onkeyup="this.value = this.value.replace(/^(([1-9]\d{0,2})?).*$/, '$1')"

 

收获园豆:1
脚本王子 | 园豆:779 (小虾三级) | 2016-04-07 20:12
0

<input type="text" onkeyup="(function(o){
o.value=o.value.replace(/^(\d{1,3})\w*/g,'$1').replace(/[^\d]+/,'');
})(this)">

收获园豆:1
Yu | 园豆:12950 (专家六级) | 2016-04-08 08:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册