Vue 3 中表单校验怎么处理特殊字符的过滤与校验

夜宇小哥_1312

夜宇小哥_1312

2026-10-12

472人浏览

原创

vue-component-analyzer
vue-component-analyzer

递归分析 Vue 项目组件依赖,从入口文件生成组件层级图,支持 Vue 2/3,输出组件名、文件路径和属性。适用于分析组件结构、排查依赖或了解项目架构。

下载
vue 3处理特殊字符需“输入时过滤”和“失焦/提交时校验”双线并行:输入阶段用v-model.trim和@input+正则替换函数实时清理;校验阶段用rules中validator函数语义化提示,如含特殊字符则callback(new error('不能包含特殊字符'))。

vue 3 中表单校验怎么处理特殊字符的过滤与校验

Vue 3 中处理特殊字符,核心是“输入时过滤”和“失焦/提交时校验”双线并行,不是只靠 rules 一锤定音。关键在于区分场景:用户打字过程中要实时清理(比如自动删掉`!@#¥%`),而正式校验则需明确提示“不能含特殊字符”。

输入阶段:用 .trim + 自定义过滤函数自动清理

在 el-input 或 van-field 上,不单靠 v-model,而是配合修饰符和函数拦截:

  • v-model.trim:自动去除首尾空格,是最基础但必加的一步
  • @input + 替换函数:监听每次输入,用正则直接过滤掉非法字符

例如封装一个通用过滤函数:

utils/validate.ts

export const replaceCommonText = (e: Event | string): string => {
  const val = typeof e === 'string' ? e : (e.target as HTMLInputElement).value
  // 匹配常见特殊字符(不含空格、下划线、中英文标点)
  return val.replace(/[`~!@#$%^&*()_+=[]{}|;':",./?\—·~《》]/g, '')
}

页面中使用:

<el-input v-model="form.title"> form.title = replaceCommonText(e)" 
/></el-input>

校验阶段:rules 中用 validator 做语义化提示

过滤只是“不让它存”,校验才是“告诉用户为什么不行”。用自定义校验器,在 blur 或 submit 时触发检查:

  • 校验器接收 value,判断是否含特殊字符
  • 若命中,调用 callback(new Error('xxx')) 报错
  • 若通过,必须调用 callback()(无参)否则视为失败

示例规则:

const validateNoSpecialChar = (_rule: any, value: string, callback: Function) => {
  const pattern = /[`~!@#$%^&*()_+=[]{}|;':",./?\—·~《》]/
  if (pattern.test(value)) {
    callback(new Error('不能包含特殊字符'))
  } else {
    callback()
  }
}

const rules = {
  title: [{ validator: validateNoSpecialChar, trigger: 'blur' }]
}

补充技巧:手机号、邮箱等字段的特殊字符预处理

像电话、邮箱这类字段,往往需要更精准控制。可结合正则做“格式兜底”:

  • 手机号:/^[1][3-9]d{9}$/ —— 只允许纯数字且符合号段
  • 邮箱:/^[^s@]+@[^s@]+.[^s@]+$/ —— 禁止空格、多余符号
  • 输入时就用 .trim + replace(/s/g, '') 清掉所有空白符

这样即使用户粘贴了带空格或换行的号码,也能第一时间归一化。

注意事项:避免校验与过滤逻辑冲突

如果既在 input 时过滤,又在校验时检查“是否含特殊字符”,可能造成体验割裂(比如用户根本输不进去,却还看到错误提示)。建议:

  • 过滤函数尽量“静默”——只删不报错
  • 校验规则只用于用户主动提交或失焦后验证,且 message 要明确(如“请勿输入中文标点”)
  • 对 checkbox、select 等非文本控件,无需特殊字符处理,重点放在 required 和 value 合法性上

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

vue.js vue vue 3 vue3

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2423

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

5223

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6290

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

5858

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

823

5

js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

2023.06.20

4196

8

正则表达式不包含
正则表达式不包含

正则表达式,又称规则表达式,,是一种文本模式,包括普通字符和特殊字符,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式的文本。php中文网给大家带来了有关正则表达式的相关教程以及文章,希望对大家能有所帮助。

2023.07.05

2721

4

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

2023.07.05

7442

9

java正则表达式匹配字符串
java正则表达式匹配字符串

在Java中,我们可以使用正则表达式来匹配字符串。本专题为大家带来java正则表达式匹配字符串的相关内容,帮助大家解决问题。

2023.08.11

792

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue 教程
Vue 教程

共42课时 | 17.1万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.4万人学习

Vue.js 微实战--十天技能课堂
Vue.js 微实战--十天技能课堂

共18课时 | 1.7万人学习