vue中将验证表单输入框的方法写在一个js文件中(表达式验证邮箱、身份证、号码、两次输入的密码是否一致)

简介: 这篇文章介绍了如何在Vue框架中将表单输入验证逻辑封装到一个JavaScript文件中,并通过正则表达式验证邮箱、身份证、手机号等信息,同时确保两次密码输入的一致性。

文章目录

    • 1、实现的效果
    • 2、编写的js文件(这里写在了api文件下)
    • 3、在vue页面中引入(script)
    • 4、页面代码

1、实现的效果

20220606_154646

2、编写的js文件(这里写在了api文件下)


//验证纯数字
let regNumber = /^[0-9]*$/;

//验证身份证
let IDRe18 = /^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/;
let IDre15 = /^([1-6][1-9]|50)\d{4}\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}$/;

//验证邮箱
let regEmail = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;//验证邮箱的正则表达式


export default{

    //验证用户昵称
    checkNickName:(rule, value, callback)=> {
        value = value.replace(/\s*/g, "");//去除空格
        if (!value) {
            return callback(new callback('请输入昵称'))
        }
        if (value.length < 0 || value.length > 10) {
            callback(new Error("昵称的长度范围是0-10,请输入合法的名称!!!"))
        } else if (regNumber.test(value)) {
            callback(new Error("输入的内容不能是纯数字!!!"))
        } else {
            callback()
        }
    },

    //验证用户名
    checkUserName: (rule, value, callback) => {
        value = value.replace(/\s*/g, "");//去除空格
        if (!value) {
            return callback(new callback('请输入用户名'))
        }
        if (value.length < 0 || value.length > 10) {
            callback(new Error("昵称的长度范围是【0-10】"))
        } else if (regNumber.test(value)) {
            callback(new Error("输入的内容不能是纯数字!!!"))
        } else {
            callback()
        }
    },


    //验证用户性别
    checkGender :(rule,value,callback)=>{
        value = value.replace(/\s*/g, "");//去除空格
        if (!value) {
            return callback(new callback('请输入性别'))
        }

        if(value == '男' || value == '女'){
            callback()
        }else{
            callback(new Error("请输入合法的性别"))
        }

    },


    //验证身份证
    checkIdCard : (rule, value, callback) => {
        value = value.replace(/\s*/g, "");//去除空格
        if (!value) {
            return callback(new callback('请输入身份证'))
        }

        // 校验身份证:
        if (IDRe18.test(value) || IDre15.test(value)) {
            callback()
        } else {
            callback(new Error("身份证不合法!!!"))
        }

    },

    //验证邮箱
     checkEmail : (rule, value, callback) => {
         value = value.replace(/\s*/g, "");//去除空格
         if (!value) {
             return callback(new callback('请输入邮箱'))
         }

        if (value.length < 0 || value.length > 15) {
            callback(new Error("邮箱的长度输入有误!!!,合法长度为0-15"))
        } else if (!regEmail.test(value)) {
            callback(new Error("邮箱格式不合法!!!"))
        }else{
            callback()
        }
    },

    //验证手机号
    checkPhone: (rule, value, callback) => {
        value = value.replace(/\s*/g, "");//去除空格
        if (!value) {
            return callback(new callback('请输入箱手机号'))
        }

        if (!regPhone.test(value)) {
            callback(new Error("请输入正确的手机号!!!"))
        } else {
            callback()
        }
    },

    //验证输入的密码
    checkPwd: (rule, value, callback) => {
        value = value.replace(/\s*/g, "");//去除空格
        if (!value) {
            return callback(new callback('请输入密码'))
        }

        if (value.length < 0 || value.length > 8) {
            callback(new Error("密码长度范围 0-8!!!"))
        } else if (regNumber.test(value)){
            callback()
        }else{
            return callback(new callback('输入的密码是整数'))
        }
    }


}

3、在vue页面中引入(script)

<script>
import rules from '@/api/rules.js';
    export default {
      data() {


      //验证第二次输入的密码
      const checkPwdSure = (rule,value,callback)=>{
        const regN = /^[0-9]*$/;

        if(value.length <0 || value.length >8){
          callback(new Error("密码长度范围 0-8!!!"))
        }else if(!regN.test(value)){
            callback(new Error("输入密码不合法,只能是纯数字!!!"))
        }else if(value !== this.UserForm.password){
                 callback(new Error("两次输入的密码不一致,请重新输入!!!"))
        }else{
             callback()
        }

      }

        return {
          UserForm: {
            nickName:'',
            userName: '',
            gender:'',
            IdCard:'',//身份证
            email:'',
            phone:'',
            password: '',
            surepassword:''
          },
          rules: {
            nickName:[
               {required:true,message:'请输入昵称',trigger:'blur'},
               {validator: rules.checkNickName,trigger:['change','blur']}
            ],
            userName: [
              {required: true, message: '请输入姓名', trigger: 'blur'},
              {validator: rules.checkUserName,trigger:['blur','change']}
            ],
            gender: [
              {required: true, message: '请输入性别', trigger: 'blur'},
              {validator: rules.checkGender,trigger:['blur','change']}
            ],
            IdCard: [
              {required: true, message: '请输入身份证号', trigger: 'blur'},
              {validator: rules.checkIdCard,trigger:'blur'}
            ],         
            email: [
              {required: true, message: '请输入邮箱', trigger: 'blur'},
              {validator:rules.checkEmail,trigger:'blur'}
            ],
            phone:[
              {required: true, message: '请输入电话号码', trigger: 'blur'},
              {validator: rules.checkPhone, trigger: "blur"}
              // {pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/, message: "请输入正确的手机号码", trigger: "blur"}
            ],
            password: [
              {required: true, message: '请输入密码', trigger: 'blur'},
              {validator:rules.checkPwd,trigger:'blur'}
            ],
            surepassword:[
              {required:true,message:'请再次输入密码',trigger:'blur'},
              {validator:checkPwdSure,trigger:'blur'}
            ]

          }
        };
      },
      methods: {
        resetForm(formName) {
          this.$refs[formName].resetFields();
        }
      }

    }
</script>

4、页面代码

<template>

  <div class="w">
    <header>
      <div class="logo">
        <a href="index.html"> <img src="images/logo.png" alt=""></a>
      </div>
    </header>
    <div class="registerarea">
      <h3>注册新用户
        <div class="login">我有账号,去<router-link to="/">登陆</router-link></div>
      </h3>
      <div class="reg_form">

        <el-form style="width: 60%" :model="UserForm" :rules="rules" ref="UserForm" label-width="100px">
          <ul>
            <li>
              <el-form-item label="昵称" prop="nickName" >
                <el-input v-model="UserForm.nickName" placeholder="请输入账号" ></el-input>
              </el-form-item>
            </li>
            <li>
              <el-form-item label="姓名" prop="userName">
                <el-input v-model="UserForm.userName" placeholder="请输入姓名" ></el-input>
              </el-form-item>
            </li>
            <li>
              <el-form-item label="性别" prop="gender">
                <el-input v-model="UserForm.gender" placeholder="请输入性别" ></el-input>
              </el-form-item>
            </li>
            <li>
              <el-form-item label="身份证" prop="IdCard">
                <el-input v-model="UserForm.IdCard" placeholder="请输入身份证" ></el-input>
              </el-form-item>
            </li>
            <li>
              <el-form-item label="邮箱" prop="email">
                <el-input v-model="UserForm.email" placeholder="请输入邮箱" ></el-input>
              </el-form-item>
            </li>
            <li>
              <el-form-item label="手机号" prop="phone">
                <el-input v-model="UserForm.phone" placeholder="请输入电话号码" ></el-input>
              </el-form-item>
            </li>
            <li>
              <el-form-item label="密码" prop="password">
                <el-input type="password" v-model="UserForm.password" placeholder="请输入密码" ></el-input>
              </el-form-item>
            </li>
            <li>
              <el-form-item label="确认密码" prop="surepassword">
                <el-input type="password" v-model="UserForm.surepassword" placeholder="请再次输入密码" ></el-input>
              </el-form-item>
            <li class="agree"><input type="checkbox" name="" id="">
              同意协议并注册 <a href="#">《知晓用户协议》</a>

            </li>
            <li>
              <el-form-item>
                <el-button round type="primary" @click="submitForm('UserForm')">注册</el-button>
                <el-button round type="primary" @click="resetForm('UserForm')">重置</el-button>
              </el-form-item>
            </li>
          </ul>
        </el-form>
      </div>
    </div>
    <footer>
      <div class="mod_copyright">
        <div class="links">
          <a href="#">关于我们</a> | <a href="#">联系我们</a> | 联系客服 | 友情链接 | English Site | Contact U
        </div>

      </div>
    </footer>
  </div>

</template>
相关文章
|
5月前
|
监控 负载均衡 JavaScript
有哪些有效的方法可以优化Node.js应用的性能?
有哪些有效的方法可以优化Node.js应用的性能?
296 69
|
4月前
|
JavaScript Linux 内存技术
Debian 11系统下Node.js版本更新方法详解
本指南详细介绍在Linux系统中安装和管理Node.js的步骤。首先检查现有环境,包括查看当前版本和清除旧版本;接着通过NodeSource仓库安装最新版Node.js并验证安装结果。推荐使用nvm(Node Version Manager)进行多版本管理,便于切换和设置默认版本。同时,提供常见问题解决方法,如权限错误处理和全局模块迁移方案,以及版本回滚操作,确保用户能够灵活应对不同需求。
290 0
|
4月前
|
JavaScript Linux 内存技术
Debian 11系统下Node.js版本更新方法
Debian 11更新Node.js主要就是这三种方式,无论你是初涉其中的新手还是找寻挑战的专家,总有一种方式能满足你的需求。现在,你已经是这个
320 80
|
2月前
|
编解码 JavaScript 前端开发
如何在网页播放英文的m3u8文件(基于Javascript搭建的在线网页工具)
什么是m3u8?又该如何在网页中高效、便捷地播放英文的m3u8文件呢?今天这篇文章就带你一起了解,并推荐一种基于Javascript搭建的在线网页工具,让你轻松解决播放问题。
661 0
|
8月前
|
前端开发 JavaScript
有没有方法可以保证在JavaScript中多个异步操作的执行顺序?
有没有方法可以保证在JavaScript中多个异步操作的执行顺序?
301 58
|
6月前
|
JavaScript 前端开发 Java
js 垃圾回收机制的方法
JS回收机制方法讲解
|
8月前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
237 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
7月前
|
JavaScript 前端开发 Java
深入理解 JavaScript 中的 Array.find() 方法:原理、性能优势与实用案例详解
Array.find() 是 JavaScript 数组方法中一个非常实用和强大的工具。它不仅提供了简洁的查找操作,还具有性能上的独特优势:返回的引用能够直接影响原数组的数据内容,使得数据更新更加高效。通过各种场景的展示,我们可以看到 Array.find() 在更新、条件查找和嵌套结构查找等场景中的广泛应用。 在实际开发中,掌握 Array.find() 的特性和使用技巧,可以让代码更加简洁高效,特别是在需要直接修改原数据内容的情形。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一
|
7月前
|
移动开发 运维 供应链
通过array.some()实现权限检查、表单验证、库存管理、内容审查和数据处理;js数组元素检查的方法,some()的使用详解,array.some与array.every的区别(附实际应用代码)
array.some()可以用来权限检查、表单验证、库存管理、内容审查和数据处理等数据校验工作,核心在于利用其短路机制,速度更快,节约性能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
7月前
|
供应链 JavaScript 前端开发
通过array.every()实现数据验证、权限检查和一致性检查;js数组元素检查的方法,every()的使用详解,array.some与array.every的区别(附实际应用代码)
array.every()可以用来数据验证、权限检查、一致性检查等数据校验工作,核心在于利用其短路机制,速度更快,节约性能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~

热门文章

最新文章