js去除一个字符串里面的数字和小数点以外的字符&& 金额输入框

简单的
'22a@22.33#ewe33.44asa44'.replace(/[^\d\.]/g,'')
结果:"2222.3333.4444"
评论:不满意
复杂的&完整的
'22a@22.33#ewe33.44asa44'.replace(/[^\d\.]/g,'')
.replace(".","$#$")
.replace(/\./g,"")
.replace("$#$",".");
结果:"2222.33334444"
评论:满意,符合要求
适用于input框过滤(vue element-ui)
<template>
<el-input
  v-model="elInput"
   clearable
   placeholder="  "
   @input="input"
 />
 </template>
<script>
export default {
data(){
	return{
		elInput:''
	}
},
 methods:{
	input(value) {// 普通版本-金额输入框
		 this.elInput = value.match(/\d+\.?\d*/)
		 // this.elInput = value.match(/-?\d+\.?\d*/) // 兼容负数
	 },
	 input(value) { // 千分位版本-金额输入框
	 		value =  value.split(',').join('')
		 this.elInput = this.thousands(value.match(/\d+\.?\d*/))
		 // this.elInput = value.match(/-?\d+\.?\d*/) // 兼容负数
	 },
	 thousands(num) { // 处理千分位
        return (num || 0).toString().replace(/^-?\d+/g, m => m.replace(/(?=(?!\b)(\d{3})+$)/g, ','))
      },
}
}
</script>

结果:-- 怎么输看见的都是浮点数,嘿嘿!--
评论:满意,符合要求,输入的时候 非数字的字符输不进去,多余的小数点也输入不进去,非常适合input金额框

金额输入框完美版(vue element-ui)

<template>
<el-input
	v-model=""
	clearable
	placeholder="  "
	@keyup.native="handleKeyup"
/>
</template>
<script>
	export function handleKeyup(event, negative = true) {
	  /* if (event.target.value.indexOf('.') < 0) {
	    // 如果没有小数点的情况,输入了小数点,长度变为20
	    if (event.key === '.') {
	      event.target.value += '.'
	      this.maxlength = 20
	    } else {
	      this.maxlength = 17
	    }
	    this.maxlength = 17
	  } else {
	    this.maxlength = 20
	  }*/
	  const selectionStart = event.target.selectionStart
	  const selectionEnd = event.target.selectionEnd
	  event.target.value = event.target.value.replace(/[^\-\d.,]/g, '')
	  // eslint-disable-next-line no-useless-escape
	  event.target.value = event.target.value.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3') // 只能输入两个小数
	  if (event.target.value.indexOf('.') < 0 && event.target.value !== '') {
	    // 以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额
	    if (event.target.value.substr(0, 1) === '0' && event.target.value.length === 2) {
	      event.target.value = event.target.value.substr(1, event.target.value.length)
	    }
	  }
	  const oldLength = event.target.value.length
	  let payAmount = event.target.value
	  // negative boolean 判断是否为负数
	  const regexp = negative ? /[^\-\d^\\.]+/g : /[^\d^\\.]+/g
	  payAmount = payAmount.replace(regexp, '')
	  payAmount = payAmount.replace(/,/g, '')
	   if (negative && payAmount.slice(0, 1) === '-') {
	    payAmount = '-' + payAmount.replace(/-/g, '')
	  } else {
	    payAmount = payAmount.replace(/-/g, '')
	  }
	  if (payAmount.indexOf('.') !== -1) {
	    if (payAmount.split('.')[1].length > 1) {
	      payAmount = payAmount.substring(0, payAmount.indexOf('.') + 3)
	    }
	  }
	  payAmount = String(payAmount).replace(/(?=\B(?:\d{3})+\b)(\d{3}(\.\d+$)?)/g, ',$1')
	  event.target.value = payAmount
	  if (event.key === '.') {
	    return false
	  }
	  const nowLength = event.target.value.length
	  event.target.selectionStart = selectionStart + (nowLength - oldLength)
	  event.target.selectionEnd = selectionEnd + (nowLength - oldLength)
	}
</script>

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用JavaScript来实现elul输入框只能输入数字小数点的功能,具体实现方法如下所示: ```javascript // 获取elul输入框元素 var elulInput = document.getElementById("elul-input"); // 给elul输入框绑定onkeydown事件 elulInput.onkeydown = function(event) { // 获取当前按下的键的keyCode var keyCode = event.keyCode; // 允许数字键、小数点键、删除键、退格键以及左右方向键 if ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 96 && keyCode <= 105) || keyCode == 190 || keyCode == 110 || keyCode == 8 || keyCode == 46 || keyCode == 37 || keyCode == 39) { return true; } else { return false; } }; // 给elul输入框绑定onkeyup事件 elulInput.onkeyup = function(event) { // 获取elul输入框的值 var value = elulInput.value; // 将非数字小数点字符替换为空字符串 value = value.replace(/[^\d\.]/g, ""); // 将多余的小数点替换为空字符串 value = value.replace(/\.{2,}/g, "."); // 将小数点前面的多余的0去掉 value = value.replace(/^0+(\d+)/g, "$1"); // 将小数点后面的多余的0去掉 value = value.replace(/(\.\d+?)0+$/g, "$1"); // 将elul输入框的值设置为处理后的值 elulInput.value = value; }; ``` 在上述代码中,我们首先获取了elul输入框的元素,然后给它绑定了onkeydown和onkeyup事件。在onkeydown事件中,我们判断了当前按下的键是否是数字键、小数点键、删除键、退格键以及左右方向键,如果是则返回true,否则返回false,这样就可以限制elul输入框只能输入数字小数点了。在onkeyup事件中,我们获取了elul输入框的值,然后使用正则表达式将非数字小数点字符替换为空字符串,将多余的小数点替换为空字符串,将小数点前面的多余的0去掉,将小数点后面的多余的0去掉,最后将elul输入框的值设置为处理后的值,这样就可以保证elul输入框中的数字小数点的格式是正确的。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值