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

yizhihongxing

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函数重载

    下面我将为大家详细讲解关于JavaScript函数重载的完整攻略。 什么是JS函数重载 在JavaScript中,函数重载是指在同一个范围内定义多个同名但参数类型或数量不同的函数,根据函数的参数类型或数量来判断执行哪一个具体的函数。 使用方法 在JavaScript中,没有像Java或C++语言那样支持函数重载的语法。但是我们可以通过一些技巧来实现函数重载。…

    JavaScript 2023年5月28日
    00
  • JavaScript获取对象key的几种方法和区别

    下面是关于“JavaScript获取对象key的几种方法和区别”的详细讲解。 1. 对象属性的基本概念 在 JavaScript 中,对象是指一个或多个属性的集合。一个属性包括一个名字和一个值,名字通常称之为属性名或 key,它可以是一个字符串或者一个 Symbol(ES6中的一种数据类型)。 我们可以通过以下方式定义一个对象: const obj = {k…

    JavaScript 2023年5月27日
    00
  • jquery实现表单验证简单实例演示

    下面是关于”jquery实现表单验证简单实例演示”的完整攻略。 什么是jquery表单验证 jquery是一个Javascript库,可以简化JavaScript编写等操作具体内容往往使用jQuery编写的,它可以使JavaScript的大量编码变得轻松愉快。jquery表单验证就是使用jquery库来实现对表单的验证功能,包括对用户输入的内容进行格式、合法…

    JavaScript 2023年6月10日
    00
  • JavaScript lodash常见用法系列小结

    JavaScript Lodash 常见用法系列小结 简介 在 JavaScript 编程中,Lodash是一个非常实用的工具库。它提供了很多实用的方法,可以让我们更方便地进行数组、对象等各种数据操作。 本系列将以实际应用场景为导向,总结 Lodash 常用的功能和用法,并且给出详细的代码示例。 目录 数组操作 对象操作 字符串操作 集合操作 函数式编程 其…

    JavaScript 2023年5月28日
    00
  • js实现点击文本框显示日期选择器特效代码分享

    下面是详细的攻略: 1. 概述 日期选择器是网页开发中经常用到的功能,可以方便用户选择日期。在前端开发中,我们可以使用 JavaScript 实现一个点击文本框显示日期选择器的特效。下面将介绍具体的实现方法。 2. 实现步骤 2.1 HTML 结构 首先,在 HTML 中需要创建一个文本框和显示日期的容器。代码如下: <label for="…

    JavaScript 2023年5月27日
    00
  • js实现导航栏上下动画效果

    JS实现导航栏上下动画效果攻略 1. 确定导航栏样式 首先,我们需要确定导航栏的样式,通常包括容器样式、菜单样式和链接样式。可以使用CSS给导航栏添加样式。 .navbar { background-color: #fff; color: #333; display: flex; justify-content: space-between; align-i…

    JavaScript 2023年6月10日
    00
  • JavaScript将当前时间转换成UTC标准时间的方法

    JavaScript提供了多种方法将本地时间转换为UTC标准时间。本文将为你详细介绍一些最常用和最有效的方法。 方法1:使用Date对象的toUTCString()方法 使用Date对象的toUTCString()方法可以方便地将当前时间转换为UTC标准时间。 let d = new Date(); let utcString = d.toUTCString…

    JavaScript 2023年5月27日
    00
  • javascript实现一个网页加载进度loading

    下面是关于Javascript实现一个网页加载进度loading的完整攻略。 步骤一:添加HTML结构 首先,在网页的HTML结构中添加loading元素,用于显示进度条和加载状态。可以采用下面代码模板: <div id="loading"> <div id="progress"></di…

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