/^(0|[1-9]\d*)$/
匹配非负整数
^ 表示字符串的开始。
0:匹配单个零。
[1-9]\d*:匹配以1到9开头的数字,后面可以跟任意数量的数字(包括零)。
$ 表示字符串的结束。
/[^0-9]/g
匹配任何非数字字符
^ 在方括号内表示取反,意味着匹配不在指定范围内的字符
0-9 表示所有数字字符(从0到9)
g 是一个标志,表示全局匹配,即在整个字符串中查找所有匹配项
/^0+(?!$)/
匹配以一个或多个零开头的字符串,但不匹配仅包含零的字符串
^ 表示字符串的开始。
0+ 表示一个或多个零。
(?!$) 是一个负向前瞻,表示后面不能是字符串的结束。换句话说,匹配的零后面必须还有其他字符。
<div id="app">
<el-form label-width="auto">
<el-form-item label="非负整数">
<el-input
v-model.trim="value1"
@input="handleInput1($event)"
clearable
style="width: 400px"
></el-input
></el-form-item>
<el-form-item label="非负整数或带一位小数">
<el-input
v-model.trim="value2"
@input="handleInput2($event)"
clearable
style="width: 400px"
></el-input
></el-form-item>
</el-form>
</div>
</template>
<script>
export default {
name: "App",
data() {
return {
value1: "",
value2: "",
};
},
methods: {
// 非负数
handleInput1(event) {
// 非负整数
const regex = /^(0|[1-9]\d*)$/;
if (!regex.test(event)) {
// 移除非数字字符
const cleanedValue = event.replace(/[^0-9]/g, "");
// 移除0开头的0
const noLeadingZeros = cleanedValue.replace(/^0+(?!$)/, "");
this.value1 = noLeadingZeros;
}
},
//非负数保留一位小数
handleInput2(event) {
const regex = /^\d+(\.\d)?$/;
// 如果有小数,去除首个零之后的0
if (!event.includes(".")) {
event = event.replace(/^0+(?!$)/, "");
}
// 先保留输入的有效部分,然后去掉无效部分
if (regex.test(event)) {
// 如果输入值合法,直接赋值
this.value2 = event;
} else {
// 如果输入值不合法,移除无效字符
event = event.replace(/[^0-9.]/g, "");
console.log("
标签:el,匹配,index,replace,字符,字符串,input,event,const
From: https://www.cnblogs.com/hxy--Tina/p/18426797