el-input限制输入0-100的数字,最多四位小数
<template>
<el-input
min="0"
max="100"
clearable
type="number"
step="0.0001"
class="!w-[120px]"
placeholder="输入检测值"
v-model="value"
@input="
value =
value.replace(
/^(100|[1-9]?\d)(\.\d{0,4})?.*$/,
'$1$2'
)
"
</el-input>
<template>
<script setup lang='ts'>
import { ref } from "vue";
const value = ref();
</script>
/** 去掉input右边的上下箭头 */
<style lang="scss" scoped>
:deep(input::-webkit-outer-spin-button),
:deep(input::-webkit-inner-spin-button) {
-webkit-appearance: none !important;
}
:deep(input[type="number"]) {
appearance: textfield;
-moz-appearance: textfield;
}
</style>
详细解释
-
^(100|[1-9]?\d):100|: 匹配 100。[1-9]?\d: 匹配 0-99 的数字。[1-9]?: 匹配 1-9 的数字,出现 0 次或 1 次。\d: 匹配一个数字(0-9)。
-
(\.\d{0,4})?:\.: 匹配小数点。\d{0,4}: 匹配 0 到 4 位数字。(...): 圆括号用于捕获匹配的子字符串。?: 表示前面的模式是可选的(零次或一次)。
-
.*$: 匹配任意字符零次或多次,直到字符串的结尾。 -
替换字符串
'$1$2':$1: 表示第一个捕获组,即整数部分。$2: 表示第二个捕获组,即小数部分。
-
type="number": 确保输入框只能输入数字。
-
step="0.0001": 设置步长为 0.0001,以允许最多四位小数。
-
min="0" 和 max="100": 设置输入的最小值和最大值。
-
@input 事件: 使用正则表达式确保输入的整数部分在 0 到 100 之间,并且最多四位小数。
示例
- 如果
value是"123.45678abc",替换后会变成"23.4567"(因为 123 超出了 0-100 的范围)。 - 如果
value是"99.9999xyz",替换后会变成"99.9999"。 - 如果
value是"100.1234",替换后会变成"100.1234"。 - 如果
value是"0.1234",替换后会变成"0.1234"。

浙公网安备 33010602011771号