value=value.replace(/[^\d.-]/g,'').replace(/^\./g,'').replace(/\.{2,}/g,'.').replace('.', '$#$').replace(/\./g, '').replace('$#$','.').replace(/^(\-)*(\d+)\.(\d\d\d\d).*$/,'$1$2.$3').replace(/\-{2,}/g,'-').replace('-', '$#$').replace(/\-/g, '').replace('$#$','-') 保留小数点前6位
时间: 2023-05-21 07:01:55 浏览: 501
这是一个JavaScript代码,作用是将字符串中的非数字、非小数点、非负号字符替换为空字符串,然后将开头的小数点替换为空字符串,将连续的小数点替换为一个小数点,最后将第一个小数点替换为"$"符号。
例如,如果value为"12.3a4-5.6",则经过这段代码处理后,value变为"12.34-5.6"。
相关问题
function limitDecimal(obj) { // 清除"数字"和"."以外的字符 obj.value = obj.value.replace(/[^\d.]/g, ""); // 验证第一个字符是数字 obj.value = obj.value.replace(/^\./g, ""); // 只保留第一个小数点,清除多余的 obj.value = obj.value.replace(/\.{2,}/g, "."); obj.value = obj.value.replace(".", "$#$").replace(/\./g, "").replace("$#$", "."); // 只能输入两个小数 obj.value = obj.value.replace(/^(-)*(\d+)\.(\d\d).*$/, '$1$2.$3');} 封装到util里 用vue3.0
可以将该函数封装到 Vue3 的自定义指令中,代码如下:
```js
import { Directive } from 'vue';
const limitDecimalDirective: Directive = {
mounted(el) {
el.addEventListener('input', function(event) {
const target = event.target as HTMLInputElement;
target.value = target.value.replace(/[^\d.]/g, '')
.replace(/^\./g, '')
.replace(/\.{2,}/g, '.')
.replace('.', '$#$')
.replace(/\./g, '')
.replace('$#$', '.')
.replace(/^(-)*(\d+)\.(\d\d).*$/, '$1$2.$3');
});
}
};
export default limitDecimalDirective;
```
然后在 Vue3 的组件中使用该指令即可:
```vue
<template>
<div>
<input v-limit-decimal />
</div>
</template>
<script>
import { defineComponent } from 'vue';
import limitDecimalDirective from '@/utils/limitDecimalDirective';
export default defineComponent({
directives: {
limitDecimal: limitDecimalDirective
}
});
</script>
```
注意,为了能够正确地获取并修改输入框的值,需要在指令的方法中使用 `addEventListener` 监听 `input` 事件,而不能直接使用 `el.value`。另外,为了避免与其他指令或组件的命名冲突,可以将该指令命名为 `limitDecimal`。
请将oninput='value=value.replace(/[^\d^\.]+/g, "").replace("$#$", ".").replace(".", "$#$").replace(/\./g, "").replace("$#$", ".")' replace后面的代码进行合并
可以将代码合并为:
```javascript
value = value.replace(/[^\d.]+/g, '').replace("$#$", ".").replace(/\./g, '').replace("$#$", ".");
```
这样就能保证用户在输入时只能输入数字和小数点,且小数点只能出现一次。
阅读全文