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>
相关文章
|
3天前
|
人工智能 JavaScript 网络安全
ToB项目身份认证AD集成(三完):利用ldap.js实现与windows AD对接实现用户搜索、认证、密码修改等功能 - 以及针对中文转义问题的补丁方法
本文详细介绍了如何使用 `ldapjs` 库在 Node.js 中实现与 Windows AD 的交互,包括用户搜索、身份验证、密码修改和重置等功能。通过创建 `LdapService` 类,提供了与 AD 服务器通信的完整解决方案,同时解决了中文字段在 LDAP 操作中被转义的问题。
|
4天前
|
存储 JavaScript 前端开发
JavaScript 数据类型详解:基本类型与引用类型的区别及其检测方法
JavaScript 数据类型分为基本数据类型和引用数据类型。基本数据类型(如 string、number 等)具有不可变性,按值访问,存储在栈内存中。引用数据类型(如 Object、Array 等)存储在堆内存中,按引用访问,值是可变的。本文深入探讨了这两种数据类型的特性、存储方式、以及检测数据类型的两种常用方法——typeof 和 instanceof,帮助开发者更好地理解 JavaScript 内存模型和类型检测机制。
10 0
JavaScript 数据类型详解:基本类型与引用类型的区别及其检测方法
|
4天前
|
存储 JavaScript 前端开发
JavaScript数组去重的八种方法详解及性能对比
在JavaScript开发中,数组去重是一个常见的操作。本文详细介绍了八种实现数组去重的方法,从基础的双重循环和 indexOf() 方法,到较为高级的 Set 和 Map 实现。同时,分析了每种方法的原理和适用场景,并指出了使用 Set 和 Map 是目前最优的解决方案。通过本文,读者可以深入理解每种方法的优缺点,并选择最合适的数组去重方式。
9 0
|
5天前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
35 0
|
5天前
|
JavaScript
深入解析:JS与Vue中事件委托(事件代理)的高效实现方法
深入解析:JS与Vue中事件委托(事件代理)的高效实现方法
14 0
|
5天前
|
JavaScript 前端开发 大数据
在JavaScript中,Object.assign()方法或展开语法(...)来合并对象,Object.freeze()方法来冻结对象,防止对象被修改
在JavaScript中,Object.assign()方法或展开语法(...)来合并对象,Object.freeze()方法来冻结对象,防止对象被修改
6 0
|
5天前
|
存储 JavaScript 前端开发
Vue.js项目中全面解析定义全局变量的常用方法与技巧
Vue.js项目中全面解析定义全局变量的常用方法与技巧
9 0
|
5天前
|
分布式计算 JavaScript 前端开发
JavaScript:轻松创建二维数组的多种方法
本文探讨了如何使用 JavaScript 生成二维数组的多种方法,揭示了这些方法在编程中的灵活应用。文章首先通过介绍如何创建一维数组,为理解二维数组的生成奠定基础。接着,分析了几种常见的生成二维数组的方法,包括使用嵌套循环、Array.from()、Array.fill() 以及 展开运算符 和 map() 等技巧。每种方法都有其优缺点,开发者可以根据场景选择最合适的方案。
10 0
|
JavaScript 前端开发 数据安全/隐私保护