vue之el-form表单校验以及常用正则详解

Vue之el-form表单校验以及常用正则详解

前言

在前后端分离的web开发中,前端负责数据的采集、交互等操作。在web表单中,数据的准确性、合法性都需要得到保障,因此加入表单校验机制,不仅可以规范数据的格式,降低后端的数据处理难度,也能增强用户的体验感。

Vue是一套渐进式的JavaScript框架,本文主要介绍Vue中的表单校验以及常用正则的运用。

el-form表单校验

el-form是ElementUI中表单的基础,它提供了丰富的校验方法,校验结果的反馈能够直接给出错误提示,并且可以根据需要进行自定义校验。接下来,我将详细介绍如何在Vue中使用el-form表单校验。

使用步骤

第一步:安装ElementUI

打开命令行,输入以下命令:

npm install element-ui -S

第二步:引入ElementUI

在main.js中引入:

import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

Vue.use(ElementUI);

第三步:使用el-form

在Vue组件中,引入el-form和el-form-item组件,el-form-item用来包含表单的各个输入框,el-form则用来进行表单数据的提交和校验,设置具体的代码和参数如下:

<el-form :model="ruleForm" ref="ruleForm" :rules="rules" label-width="100px">
  <el-form-item label="用户名" prop="name">
    <el-input v-model="ruleForm.name" placeholder="请输入用户名"></el-input>
  </el-form-item>
  <el-form-item label="邮箱" prop="email">
    <el-input v-model="ruleForm.email" placeholder="请输入邮箱"></el-input>
  </el-form-item>
  <el-form-item label="密码" prop="password">
    <el-input v-model="ruleForm.password" type="password" placeholder="请输入密码"></el-input>
  </el-form-item>
  <el-form-item>
    <el-button type="primary" @click="submitForm('ruleForm')">提交</el-button>
  </el-form-item>
</el-form>

代码解释:

  • el-form标签中的model绑定了Vue对象中的ruleForm属性,即表单中每个input对应的数据。
  • :rules属性为el-form表单校验规则,是一个对象数组,包含了每个输入框需要校验的规则。
  • label-width属性是标签的宽度。
  • el-form-item中的prop对应model中的属性,即required校验需要对应的model也存在。

第四步:定义校验规则

为了使el-form实现表单校验,需要为表单输入框编写相关的规则。账号密码等的校验规则采用ElementUI常用的校验规则。例如:

export default {
  data () {
    return {
      ruleForm: {
        name: '',
        email: '',
        password: ''
      },
      rules: {
        name: [
          { required: true, message: '请输入账户名', trigger: 'blur' },
          { min: 3, max: 12, message: '长度在 3 到 12 个字符', trigger: 'blur' }
        ],
        email: [
          { required: true, message: '请输入邮箱地址', trigger: 'blur' },
          { type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }
        ],
        password: [
          { required: true, message: '请输入密码', trigger: 'blur' },
          { min: 6, max: 20, message: '长度在 6 到 20 个字符', trigger: 'blur' }
        ]
      }
    };
  },
  methods: {
    submitForm(formName) {
      this.$refs[formName].validate(valid => {
        if (valid) {
          alert('提交成功');
        } else {
          return false;
        }
      });
    }
  }
};

第五步:提交表单

通过监听表单提交按钮的点击事件,调用validate方法进行表单的校验,如果校验通过则执行相关操作,否则阻止表单的提交。

methods: {
  submitForm(formName) {
    this.$refs[formName].validate(valid => {
      if (valid) {
        alert('提交成功');
      } else {
        return false;
      }
    });
  }
}

注意事项

  • 注意将input的v-model与el-form中的model绑定。
  • 校验规则要写在规则数组中,并按照需要进行校验。
  • el-form Item组件中prop绑定的值需要在model中存在。

以上就是如何使用el-form进行表单校验,接下来将为大家讲解具体的应用场景。

示例一

如何校验两个输入框中的密码是否一致?这是一个比较常见的场景。

首先,我们需要在规则数组中增加validator属性,来实现自定义规则校验。

rules: {
  password: [
    { required: true, message: '请输入密码', trigger: 'blur' },
    { min: 6, max: 20, message: '长度在 6 到 20 个字符', trigger: 'blur' }
  ],
  confirm: [
    { required: true, message: '请再次输入密码', trigger: 'blur' },
    { validator: sameAsPassword, trigger: 'blur' }
  ]
}

其中sameAsPassword为自定义的校验方法。它接收三个参数,分别是表单输入框的值、第二个输入框的值和回调函数。规则返回值为true或false,表示校验成功或失败。

function sameAsPassword(rule, value, callback) {
  if (value !== this.ruleForm.password) {
    callback(new Error('两次输入的密码不一致'));
  } else {
    callback();
  }
}

上述代码中,所传参中的“this”指向Vue组件实例,因此可以访问到它的ruleForm。

示例二

我们还可以增加自定义规则,例如限制用户输入的字符不能包含特殊字符。

rules: {
  name: [
    { required: true, message: '请输入账号名', trigger: 'blur' },
    { validator: validUsername, trigger: 'blur' }
  ]
}

validUsername方法的实现如下:

function validUsername(rule, value, callback) {
  const reg = /^[a-zA-Z0-9_-]{4,16}$/;
  if (!reg.test(value)) {
    callback(new Error('账号格式不正确'));
  } else {
    callback();
  }
}

根据以上示例,我们详细介绍了el-form在Vue中的使用,实现了常见的表单检验功能。下一步开始介绍常用正则表达式。

常用正则详解

在表单校验以及数据处理中,常用的正则表达式用于匹配、查找、查找和替换等文本操作,它们都可以使用JavaScript的RegExp对象来实现。接下来,我将为你介绍一些常用的正则表达式。

匹配数字

用于匹配整数或浮点数:

/^(\d+)(\.\d+)?$/

用途:

用来匹配单个整数或浮点数,如:

/^(\d+)(\.\d+)?$/.test('123'); // true 
/^(\d+)(\.\d+)?$/.test('12.12'); // true
/^(\d+)(\.\d+)?$/.test('12.0000'); // true
/^(\d+)(\.\d+)?$/.test('abc'); // false

匹配电话号码

用于匹配电话号码:

/^\d{3}-\d{8}|\d{4}-\d{7,8}$/

用途:

用来匹配中国大陆的电话号码,如:

/^\d{3}-\d{8}|\d{4}-\d{7,8}$/.test('010-11111111'); // true
/^\d{3}-\d{8}|\d{4}-\d{7,8}$/.test('021-88888888'); // true
/^\d{3}-\d{8}|\d{4}-\d{7,8}$/.test('010-1111111'); // false
/^\d{3}-\d{8}|\d{4}-\d{7,8}$/.test('011-11111111'); // false

匹配用户名

用户名匹配:

/^[a-zA-Z0-9_-]{4,16}$/

用途:

指用户名在 4 到 16 位之间,并且只能由字母、数字、_ 或 - 组成,如:

/^[a-zA-Z0-9_-]{4,16}$/.test('a123456789aaaaa'); // false
/^[a-zA-Z0-9_-]{4,16}$/.test('a123'); // false
/^[a-zA-Z0-9_-]{4,16}$/.test('a_123'); // true
/^[a-zA-Z0-9_-]{4,16}$/.test('$$$$$'); // false

匹配邮箱地址

邮箱地址匹配:

/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/

用途:

用来匹配电子邮件地址,如:

/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test('user@example.com'); // true
/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/.test('user.@example.com.com'); // false

匹配身份证号码

身份证号码匹配:

/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/

用途:

用来匹配中国大陆的公民身份证号码,如:

/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test('13098119881002926X'); // true

上述就是几种常用的正则表达式及它们的用途。

总结

本文简单介绍了Vue中表单校验的使用方法,以及常用的正则表达式。在表单校验中,我们使用了ElementUI中的el-form组件,它提供了丰富的功能和自定义扩展,非常方便实用。希望本文对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue之el-form表单校验以及常用正则详解 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 原生js实现无限循环轮播图效果

    原生JS实现无限循环轮播图的步骤如下: 定义样式和HTML结构 先定义轮播图的样式和HTML结构,可以用一个ul包含多个li标签,每个li标签里放置一张图片。 <div> <ul class="slider"> <li><img src="image1.jpg" alt=&qu…

    JavaScript 2023年6月11日
    00
  • 分享一个自己写的简单的javascript分页组件

    下面我来详细讲解如何分享一个自己写的简单的 JavaScript 分页组件,并且提供两条示例说明。 前置知识 在开始分享 JavaScript 分页组件之前,需要掌握一些基本的前置知识,如 HTML、CSS 和 JavaScript 的基本语法和概念。同时,也需要了解一些相关的知识,比如 DOM 操作、事件监听、Ajax 等。 分享步骤 分享一个 JavaS…

    JavaScript 2023年6月11日
    00
  • JS实现控制表格单元格垂直对齐的方法

    控制表格单元格垂直对齐是前端页面布局中经常遇到的问题。接下来,我将分步骤介绍在JS中实现单元格垂直对齐的方法。 步骤1:在HTML中添加表格代码 首先,我们需要在HTML中添加一个表格。下面是一个简单的表格代码示例: <table> <thead> <tr> <th>表头1</th> <th&…

    JavaScript 2023年6月10日
    00
  • javascript数组使用调用方法汇总

    JavaScript数组使用调用方法汇总 在JavaScript中,数组是一个非常常用的数据结构类型,拥有丰富的调用方法。这篇文章将为大家总结汇总了JavaScript数组使用调用方法,方便大家开发时进行参考使用。 创建一个数组 // 创建一个空数组 let arr = []; // 使用Array构造函数创建 let arr = new Array(); …

    JavaScript 2023年5月27日
    00
  • 教你如何使用 JavaScript 读取文件

    首先我们来讲一下使用 JavaScript 读取文件的基本步骤。 1. 创建一个 input 元素 <input type="file" id="inputFile"> 我们需要在 HTML 中创建一个 input 元素,并设置其 type 属性为 file,获取用户从本地计算机中选择的文件。 2. 监听 …

    JavaScript 2023年5月27日
    00
  • js如何构造elementUI树状菜单的数据结构详解

    下面是关于如何构造ElementUI树状菜单数据结构的攻略: 一、树状菜单数据结构的构成 ElementUI树状菜单所需要的数据结构是一个层级结构的树形数据结构,它由多个节点组成,每个节点可能有子节点,也可能没有。一棵树可以看做是枝干和叶子构成的,枝干负责连接,而叶子负责储存信息。因此,需要针对菜单的特性构造一个合适的数据结构,这个数据结构应该包含以下属性:…

    JavaScript 2023年6月10日
    00
  • 《javascript设计模式》学习笔记三:Javascript面向对象程序设计单例模式原理与实现方法分析

    下面是《JavaScript设计模式》学习笔记三的详细解析,包括单例模式的原理及其实现方法。 什么是单例模式? 在JavaScript中,单例模式是一个非常有用的设计模式。所谓单例模式,就是指一个类仅有一个实例并提供一个全局访问点。 使用单例模式可以避免创建过多的对象,降低系统内存的开销,并且可以让我们更方便地管理某些全局状态或全局资源。 单例模式的实现方法…

    JavaScript 2023年5月27日
    00
  • JS字符串拼接的几种常见方式总结

    下面是对于JS字符串拼接的几种常见方式总结的攻略,包含以下内容: 方式一:使用加号(+)拼接字符串 加号(+)是最常见的字符串拼接方式,具体语法如下: let str = ‘Hello, ‘ + ‘world!’; 其中,单引号(’)或双引号(”)用来包裹字符串内容,加号(+)用来拼接字符串,可以看到在以上例子中,我们通过加号把两个字符串连接了起来。 值得注…

    JavaScript 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部