常用表单校验规则 + 编辑保存时进行整个表单校验 或者 单个表单项进行校验

一、常用表单校验规则

1、 邮箱校验规则一

//邮箱校验 (匹配包含 @ 的邮箱地址)
export const validateEmail = async (RuleObject, value) => {
  // const reg = new RegExp(/^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+$/)
  // const reg = new RegExp(/^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/)
  const reg = new RegExp(/^[a-zA-Z0-9_-]+@([a-zA-Z0-9]+\.)+(com|cn|net|org)$/)
  if (value) {
    if (!reg.test(value)) {
      return Promise.reject('请输入正确的邮箱');
    } else {
      return Promise.resolve();
    }
  } else {
    return Promise.resolve();
  }
}

2、 网址校验规则

// 网址校验 (以 http:// 或 https:// 或 ftp:// 开头的 URL)
export const validateEmail1 = async (RuleObject, value) => {
  const reg = new RegExp(/^(https?|ftp):\/\/[^\s]+$/)
  if (value) {
    if (!reg.test(value)) {
      return Promise.reject('请输入正确的网址');
    } else {
      return Promise.resolve();
    }
  } else {
    return Promise.resolve();
  }
}

3、QQ校验规则

//qq校验
export const validateQQ = async (RuleObject, value) => {
  const reg = new RegExp(/^[1-9][0-9]{4,10}$/);
  if (value) {
    if (!reg.test(value)) {
      return Promise.reject('请输入正确的QQ号');
    } else {
      return Promise.resolve();
    }
  } else {
    return Promise.resolve();
  }
}

4、身份证号码校验规则

//身份证号校验 (15位或18位数字,或17位数字加最后一位是 x 或 X)
export const validateIdCard = async (RuleObject, value) => {
  const reg = new RegExp(/(^\d{8}(0\d|10|11|12)([0-2]\d|30|31)\d{3}$)|(^\d{6}(18|19|20)\d{2}(0[1-9]|10|11|12)([0-2]\d|30|31)\d{3}(\d|X|x)$)/);
  const reg1 = new RegExp(/^[A-Z]\d{7,11}$/)
  if (value) {
    if (!reg1.test(value)&&!reg.test(value)) {
      return Promise.reject('请输入正确的身份证号');
    } else {
      return Promise.resolve();
    }
  } else {
    return Promise.resolve();
  }
}

5、微信校验规则

//微信校验
export const validateCharts = async (RuleObject, value) => {
  const reg = new RegExp(/^[a-zA-Z][-_a-zA-Z0-9]{5,19}$/);
  if (value) {
 
    if (!reg.test(value)) {
      return Promise.reject('请输入正确的微信号');
    } else {
      return Promise.resolve();
    }
  } else {
    return Promise.resolve();
  }
}

6、手机号校验规则

//手机号校验 (以 1 开头,第二位是3或5或6或7或8或9,后面跟9位数字)
export const validatPhone = async (RuleObject, value) => {
  const reg = new RegExp(/^1[3-9]\d{9}$/);
  if (value) {
 
    if (!reg.test(value)) {
      return Promise.reject('请输入正确的手机号');
    } else {
      return Promise.resolve();
    }
  } else {
    return Promise.resolve();
  }
}

7、电话号码校验规则

//电话校验 (以 3个数字或4个数字和 - 隔开的形式)
export const validatPhone = async (RuleObject, value) => {
  const reg = new RegExp(/^\d{3}-\d{8}|\d{4}-\d{7}$/);
  if (value) {
 
    if (!reg.test(value)) {
      return Promise.reject('请输入正确的手机号');
    } else {
      return Promise.resolve();
    }
  } else {
    return Promise.resolve();
  }
}

8、银行卡号校验规则

//银行卡号校验
export const validatBankCard = async (RuleObject, value) => {
  const reg = new RegExp(/^[1-9]\d{9,29}$/);
  if (value) {
    if (!reg.test(value)) {
      return Promise.reject('请输入正确的银行卡号');
    } else {
      return Promise.resolve();
    }
  } else {
    return Promise.resolve();
  }
}

9、数字字母校验规则

//数字字母校验
export const validatNumberLetter = async (RuleObject, value) => {
  const reg = new RegExp(/^([A-Z]|[a-z]|[\d])*$/);
  if (value) {
    if (!reg.test(value)) {
      return Promise.reject('请输入正确的工号');
    } else {
      return Promise.resolve();
    }
  } else {
    return Promise.resolve();
  }
}

10、整数校验规则

//整数校验
export const validateInitNumber = async (RuleObject, value, min, max) => {
  if (value !== '' && value !== null && value !== undefined) {
    if (!Number(value) && value !== 0) {
      return Promise.reject('请输入数字');
    } else if (!Number.isInteger(Number(value))) {
      return Promise.reject('请输入整数');
    } else {
      if (max) {
        value = Number(value);
        if (value > max || value < min) {
          return Promise.reject('请输入' + min + '到' + max + '之间的数值');
        } else {
          return Promise.resolve();
        }
      } else {
        return Promise.resolve();
      }
    }
  } else {
    return Promise.resolve();
  }
}

11、数字校验规则

//数字校验
export const validateNumber = async (RuleObject, value, min, max) => {
  if (value !== '' && value !== null && value !== undefined) {
    if (!Number(value) && value !== 0) {
      return Promise.reject('请输入数字');
    } else {
      if (max) {
        if (value > max || value < min) {
          return Promise.reject('请输入' + min + '到' + max + '之间的数值');
        } else {
          return Promise.resolve();
        }
      } else {
        return Promise.resolve();
      }
    }
  } else {
    return Promise.resolve();
  }
}

12、文本校验规则

//文本校验
export const validateInitTxt = async (RuleObject, value, min, max) => {
  if (value) {
    if (max) {
      if (value.length > max || value.length < min) {
        return Promise.reject('请输入' + min + '到' + max + '个字符');
      } else {
        return Promise.resolve();
      }
    } else {
      return Promise.resolve();
    }
  } else {
    return Promise.resolve();
  }
}

13、密码校验规则

//密码校验
export const validatePWD = async (RuleObject, value, min, max) => {
  if (value) {
    if (max) {
      if (value.length > max || value.length < min) {
        return Promise.reject('请输入' + min + '到' + max + '个字符');
      } else {
        return Promise.resolve();
      }
    } else {
      return Promise.resolve();
    }
  } else {
    return Promise.resolve();
  }
}

最后附上rules中的使用方法

import { validateEmail,validateInitTxt, validateQQ, validateIdCard, validatPhone,validateEmail1, validatBankCard, validateInitNumber,validateNumber,validateCharts,validatNumberLetter  } from './validateForm.js';
export default  {
    '姓名': [
        {
            required: true, message: '请输入名字'
        },
        {
            validator: async (RuleObject, value) => validateInitTxt(RuleObject, value, 1, 30), trigger: 'change'
        }
    ],
    '年龄': [
        {
            required: true, message: '请输入年龄'
        },
        {
            validator: async (RuleObject, value) => validateInitNumber(RuleObject, value, 16, 65), trigger: 'change'
        }
    ],
    '身高': [
        {
            required: true, message: '请输入身高'
        },
        {
            validator: async (RuleObject, value) => validateInitNumber(RuleObject, value, 140, 210), trigger: 'change'
        }
    ],
    '体重': [
        {
            required: true, message: '请输入体重'
        },
        {
            validator: async (RuleObject, value) => validateNumber(RuleObject, value, 35, 200), trigger: 'change'
        }
    ],
    '邮件': [
        {
            required: true, message: '请输入邮件'
        },
        {
            validator: validateEmail, trigger: 'change'
        }
    ],
    '邮箱': [
        {
            required: true, message: '请输入邮箱'
        },
        {
            validator: validateEmail1, trigger: 'change'
        }
    ],
    'QQ': [
        {
            required: true, message: '请输入QQ'
        },
        {
            validator: validateQQ, trigger: 'change'
        }
    ],
    '微信': [
        {
            required: true,message: '请输入微信'
        },
 
        {
            validator: validateCharts, trigger: 'change'
        }
    ],
    '身份证': [
        {
            required: true, message: '请输入身份证号'
        },
        {
            validator: validateIdCard, trigger: 'change'
        }
    ],
    '电话': [
        {
            required: true, message: '请输入联系电话'
        },
        {
            validator: validatPhone, trigger: 'change'
        }
    ],
    '银行卡': [
        {
            required: true,message: '请输入银行卡卡号'
        },
        {
            validator: validatBankCard, trigger: 'change'
        }
    ],
    '留言板': [
        {
            required: true,message: '请输入'
        },
        {
            validator: async (RuleObject, value) => validateInitTxt(RuleObject, value, 1, 300), trigger: 'change'
        }
    ],
    '输入框50': [
        {
            required: true,message: '请输入'
        },
        {
            validator: async (RuleObject, value) => validateInitTxt(RuleObject, value, 1, 50), trigger: 'change'
        }
    ],
    '输入框30': [
        {
            required: true,message: '请输入'
        },
        {
            validator: async (RuleObject, value) => validateInitTxt(RuleObject, value, 1, 30), trigger: 'change'
        }
    ],
 
    '下拉框': [
        {
            required: true, message: '请选择'
        }
    ],
    '整数': [
        {
            required: true,message: '请输入'
        },
        {
            validator: validateInitNumber, trigger: 'change'
        }],
    '组合':[
        {
            required: true,message: '请输入'
        },
        {
            validator: validatNumberLetter, trigger: 'change'
        },
    ],
    '浮点数': [
        {
            required: true,message: '请输入'
        },
        {
            validator: validateNumber, trigger: 'change'
        }]
 
}

二、编辑保存时进行整个表单校验

1、整个表单校验

save(values) {
      this.$refs.form.validate(res => {
        if (!res) {
          this.$message.error('请根据提示信息补全提交的内容信息')
        } else {
			//此处可以进行数据处理
			// 处理完调用接口保存数据
            QualificationApi.save(values).then(res => {
              this.cancel('List')
            })
          }
        }
      })
    },

2、单个表单项进行校验

this.$nextTick(() => {
   this.$refs.form.validateField('creditCode')
   this.$refs.form.validateField('registerCapital')
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 Vue 3 中使用 Ant Design Vue 的 Form 表单组件进行确认密码校验,你可以自定义校验规则来实现。下面是一个示例: ```vue <template> <a-form ref="form" :model="formData"> <a-form-item label="密码" name="password" rules="required"> <a-input type="password" v-model="formData.password" /> </a-form-item> <a-form-item label="确认密码" name="confirmPassword" rules="required,checkPassword"> <a-input type="password" v-model="formData.confirmPassword" /> </a-form-item> <a-form-item> <a-button type="primary" @click="submitForm">提交</a-button> </a-form-item> </a-form> </template> <script> import { ref } from 'vue'; import { Form, Input, Button, message } from 'ant-design-vue'; export default { components: { 'a-form': Form, 'a-form-item': Form.Item, 'a-input': Input, 'a-button': Button }, setup() { const formRef = ref(null); const formData = ref({ password: '', confirmPassword: '' }); const checkPassword = (_, value) => { if (value !== formData.password) { return Promise.reject(new Error('两次密码输入不一致')); } return Promise.resolve(); }; const submitForm = () => { formRef.value.validate((valid) => { if (valid) { // 验证通过,执行表单提交操作 console.log('表单验证通过'); // ... } else { console.log('表单验证失败'); } }); }; return { formRef, formData, checkPassword, submitForm }; } }; </script> ``` 在上述示例中,我们在确认密码字段的 `a-form-item` 组件上定义了一个名为 `checkPassword` 的校验规则。该规则使用了一个自定义校验函数,并在函数内部判断确认密码是否与密码字段的值相同。如果不相同,我们使用 `Promise.reject` 返回一个错误信息,表示校验失败;如果相同,我们使用 `Promise.resolve` 表示校验通过。 然后,我们将这个校验规则 `checkPassword` 应用到确认密码字段的 `rules` 属性中,通过逗号分隔多个规则。注意,我们还将 "required" 规则也应用到了确认密码字段上,以确保确认密码不能为空。 在 `submitForm` 方法中,我们使用 `formRef.value.validate` 方法来进行表单验证,当验证完成后执行回调函数。你可以在回调函数中处理验证通过和验证失败的情况。 希望以上信息对你有帮助!如果你还有其他问题,请随提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值