Vue 3 中表单校验怎么验证输入内容只能为正整数

夏宇小哥_1126

夏宇小哥_1126

2026-10-08

154人浏览

原创

推荐采用「前端实时过滤 + 表单规则校验」双保险方式:输入时用正则清洗非数字字符并处理前导零,提交时用正则/数值逻辑严格校验是否为≥1的整数,并封装成可复用规则。

vue 3 中表单校验怎么验证输入内容只能为正整数

在 Vue 3 中验证输入内容只能为正整数,推荐采用「前端实时过滤 + 表单规则校验」双保险方式:既阻止非法字符输入,又防止绕过前端的恶意提交。核心是区分「输入拦截」和「提交校验」两个层面,不能只依赖其中一种。

一、输入时实时过滤(防非法字符)

使用 @input 或自定义指令,在用户敲键瞬间清理非数字字符,并排除开头为 0 的情况(如 "012" → "12"),同时禁用 e、+、-、. 等科学计数法或小数相关符号:

  • 监听 input 事件,对 event.target.value 做正则清洗:value.replace(/[^0-9]/g, '')
  • 进一步处理前导零:若清洗后以 "0" 开头且长度 > 1,用 .replace(/^0+([1-9]\d*)/, '$1') 或更稳妥地转数字再转回字符串(如 Number(value) + '',但需注意空值)
  • 限制位数(如最多 8 位)可直接截断:value = value.slice(0, 8)

二、表单规则校验(防绕过提交)

使用 Element Plus 的 :rules 或 VeeValidate / Ant Design Vue 等方案,在提交前执行严格逻辑判断,确保值符合正整数定义(≥1 的整数):

vue-component-analyzer
vue-component-analyzer

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

下载
  • 正则表达式推荐:/^[1-9]\d*$/(匹配 1、12、123,不匹配 0、00、01、空字符串)
  • 数值逻辑校验更可靠:Number.isInteger(Number(value)) && Number(value) > 0
  • 注意类型转换风险:字符串 "12.0" 经 Number() 后为 12,仍是整数;但 "12.3" 会变成 12.3,Number.isInteger(12.3) === false,可准确拦截

三、封装可复用的校验规则(推荐)

将正整数校验逻辑抽成独立函数或规则对象,便于全局复用:

  • 创建 validators.js 文件,导出:
    export const positiveIntegerRule = {
      validator: (rule, value, callback) => {
        if (!value || value === '') return callback(new Error('请输入正整数'));
        const num = Number(value);
        if (!Number.isInteger(num) || num
        callback();
      },
      trigger: 'blur'
    };
  • 在组件中直接引用:rules: { field: [positiveIntegerRule] }

四、避免常见坑点

实际开发中容易忽略但关键的细节:

  • v-model.number 不适用于字符串型输入框(如 <input type="text">),它仅对 type="number" 有效,且浏览器兼容性差、行为不一致,不建议用于正整数强控场景
  • 不要仅靠 onkeypress 或 onkeydown 拦截 —— 用户可通过粘贴、拖入、语音输入等方式绕过
  • 后端必须做相同校验 —— 前端限制仅为体验优化,不可替代服务端验证
  • 空格、全角数字、Unicode 零宽字符等特殊输入需在正则中额外处理(如 /[^\d\uFF10-\uFF19]/g 可覆盖全角数字)

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

相关文章

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

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

下载

相关标签:

vue.js vue vue 3

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

相关专题

更多
ajax教程
ajax教程

php中文网为大家带来ajax教程合集,Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。php中文网还为大家带来ajax的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.14

2620

4

ajax中文乱码解决方法
ajax中文乱码解决方法

ajax中文乱码解决方法有设置请求头部的字符编码、在服务器端设置响应头部的字符编码和使用encodeURIComponent对中文进行编码。本专题为大家提供ajax中文乱码相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.31

340

5

ajax传递中文乱码怎么办
ajax传递中文乱码怎么办

ajax传递中文乱码的解决办法:1、设置统一的编码方式;2、服务器端编码;3、客户端解码;4、设置HTTP响应头;5、使用JSON格式。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.15

2453

5

ajax网站有哪些
ajax网站有哪些

使用ajax的网站有谷歌、维基百科、脸书、纽约时报、亚马逊、stackoverflow、twitter、hacker news、shopify和basecamp等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.09.24

1141

6

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

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

2023.06.20

4056

8

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

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

2023.07.05

2581

4

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

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

2023.07.05

7062

9

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

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

2023.08.11

792

5

正则表达式空格
正则表达式空格

正则表达式空格可以用“\s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。本专题为大家提供正则表达式相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.31

500

5

热门下载

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

精品课程

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

共42课时 | 17万人学习

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

共12课时 | 1.4万人学习

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

共18课时 | 1.7万人学习