要求是能控制整数和小数的位数,gpt用了,答案是错的。
/^(?:[1-9]\d{0,整数位数-1}|0(?![.0]*$))\.\d{1,小数位数}$/
如,要求3位以内整数位,5位以内小数位
/^(?:[1-9]\d{0,2}|0(?![.0]*$))\.\d{1,5}$/
重新发,之前的有问题。输入时允许 2. 出现, 所以提交的时候要判断。
<script setup>
function inputFun(params) {
let target = params.target;
let value = target.value;
// 15 是 js 的安全小数位
let bool = /^[0-9](|\.|\.[0-9]{1,15})$/.test(value);
if (!bool) {
let val1 = value.match(/^[0-9]\.[0-9]{1,15}/);
let val2 = value.match(/^[0-9]\./);
let val3 = value.match(/^[0-9]/);
if (val1) target.value = val1[0];
else if (val2) target.value = val2[0];
else if (val3) target.value = val3[0];
else target.value = "";
}
}
</script>
<template>
<main>
<input @input="inputFun" />
</main>
</template>
/^(?!0*(\.0+)?$)\d{1,m}(\.\d{1,n})?$/
以3位整数和2位小数为例,你可以使用以下的正则表达式:
/^(?!0*(\.0+)?$)\d{1,3}(\.\d{1,2})?$/
// 正浮点数/^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$/
// 正浮点数,保留n位小数,含0/^(0|(0|[1-9][0-9]*)+(\.\d{n}))$/
13 回答12.9k 阅读
8 回答2.7k 阅读
2 回答5.1k 阅读✓ 已解决
5 回答1.3k 阅读
3 回答2.3k 阅读✓ 已解决
5 回答1.5k 阅读✓ 已解决
3 回答2.2k 阅读
控制整数位数目:


控制小数位数:
两个
replace
需要结合使用