Vue 正则表达式验证
当我们需要对用户输入的数据进行校验时,常用的方法莫过于正则表达式。在 Vue 中,我们可以通过 watch 监听数据变化并使用正则表达式来实现验证。
watch 监听数据变化
Vue 的 watch 选项可以用来监听数据的变化,语法如下:
new Vue({
data: {
inputVal: ''
},
watch: {
inputVal: function (newVal, oldVal) {
// 处理数据变化情况
}
}
})
我们可以在 watch 函数中执行验证逻辑,并将验证结果反馈给用户。
正则表达式验证
我们可以使用 JavaScript 内置的正则表达式对象 RegExp 来进行表单验证。以下是一个简单的示例,用正则表达式验证输入的电话号码是否正确:
<template>
<div>
<input type="text" v-model="phone" />
<span v-if="!isValidPhone">输入的电话号码有误。</span>
</div>
</template>
<script>
export default {
data() {
return {
phone: ''
}
},
computed: {
isValidPhone() {
return /^1[3-9]\d{9}$/.test(this.phone)
}
}
}
</script>
上面的代码通过计算属性 isValidPhone 来实现了验证逻辑,如果输入的电话号码格式有误,则在页面上显示错误提示。正则表达式 /^1[3-9]\d{9}$/
用来验证手机号码是否合法。
实时验证
我们可以使用 debounce 函数来实现真正的实时验证,以减轻页面的负担。
<template>
<div>
<input type="text" v-model="phone" />
<span v-if="!isValidPhone">输入的电话号码有误。</span>
</div>
</template>
<script>
import { debounce } from 'lodash'
export default {
data() {
return {
phone: ''
}
},
computed: {
debouncedIsValidPhone() {
return debounce(() => {
return /^1[3-9]\d{9}$/.test(this.phone)
}, 500)
},
isValidPhone() {
return this.debouncedIsValidPhone()
}
}
}
</script>
上面的代码使用了 lodash 库中的 debounce 函数来限制输入框连续输入字符时验证函数的执行次数。
结论
Vue 中的正则表达式验证并不难,只需要了解 watch 和 computed 选项的使用就可以了。如果要实现真正的实时验证,可以使用 debounce 函数来避免频繁的函数调用。在实际应用中,我们还需要考虑更加完善的验证方案,例如使用 Element UI 中封装好的表单验证组件。