<uv-input inputAlign="right" type="number" v-model="quantity" placeholder="请输入单价"
border="none" @input="e => handleInput(e, 2)"/>
const quantity = ref()
const handleInput = (e, decimals) =>{
setTimeout(() => {
quantity = handleNumberInput(e, decimals)
}, 0)
}
function handleNumberInput (
e: string | number ,
decimals: number = 2
) => {
if (e === "") return;
let result = "";
result = String(e);
if (!decimals) {
return (
result
.replace(/[^\d.]/g, "")
.replace(/^0|[^\d]|[.]/g, "")
);
}
if (decimals > 0) {
const decimalRegex = new RegExp(`(\\.\\d{${decimals}})\\d+$`, "g");
result = result
.replace(/[^\d.]/g, "")
.replace(/^0+(\d)/, "$1")
.replace(/^\./, "0.")
.replace(/\./g, (s, offset, str) =>
offset === str.indexOf(".") ? s : ""
)
.replace(decimalRegex, "$1")
.replace(/^0+([1-9])/, "$1")
.replace(new RegExp(`(\\.[\\d]{${decimals}}).*$`), "$1");
}
return result;
};