input框限制只能输入指定位数的正整数

 之所以需要写这个功能,原因是:

<input type="number" maxlength="5" /> <!--无法满足最多只能输入五位正整数的要求-->
  •  当type="text",上面代码可以限制五位
  •  当type="number",上面代码没法限制五位,可以无限输入位数
  • 使用正则还有一个原因是:type="number" 时可以输入 字母和 字符

解决办法如下: 

<input type="text" oninput="value=value.replace(/^(0+)|[^\d]+/g, '').slice(0, 5)" />
  • 输入的时候将不满足条件的字符用空字符串替换
  • 正则解读:/^(0+)|[^\d]+/g
  • ^(0+) 的意思是匹配一个或多个0开头的字符
  • [^\d] 一个反向字符集。也就是说, 它匹配任何没有包含在方括号中的字符。
  • \d 匹配一个数字等价于 [0-9]
  • [^\d] 的意思就是匹配所有不是数字 0-9 的字符
  • 总的意思就是输入的开头为0或多个0的会被去除,输入的内容中(不一定是开头),如果有不是 0-9 的数字的字符也会被去除
  • slice(0, 5) 就是限制5位数
  • 所以这样就保证了输入的内容一定是正整数

小记一下,希望可以帮助到有需要的同学! 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值