js 限制input框可以输入数字或者负数

请问如何用正则匹配限制input框输入
第一位只能输入 ’-‘ 号或者数字
后面可以输入小数点或者数字
现在只能限制只能输入数字 小数点 和’-‘号
let nums = num.replace(/[^0-9.-]/g, "");

阅读 9.2k
2 个回答

我自己常用的,可以拿去改改

function onlyNumber(num) {
  var n = String(num)
  var t = n.charAt(0)
  // 先把非数字的都替换掉,除了数字和.
  n = n.replace(/[^\d\.]/g, '')
  // 必须保证第一个为数字而不是.
  n = n.replace(/^\./g, '')
  // 保证只有出现一个.而没有多个.
  n = n.replace(/\.{2,}/g, '.')
  // 保证.只出现一次,而不能出现两次以上
  n = n.replace('.', '$#$').replace(/\./g, '').replace(
    '$#$', '.')
  // 如果第一位是负号,则允许添加
  if (t === '-') {
    n = '-' + n
  }
  return n
}

image.png

正则写还比较坑
开头 -[0-9] 或者 [0-9]
然后后面可以跟任意个 [0-9]*
然后就是小数部分 (\.[0-9]+)?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题