element 表单校验规则

304 阅读1分钟

// 数字校验规则
let validateNumber = (rule, value, callback) => {
  if (value === "" || value == null) {
    callback(new Error("请输入" + rule.label));
  } else if (!/^[0-9]*$/.test(value)) {
    callback(new Error(rule.label + "必须为数字"));
  }
  callback();
};
// 数字校验规则(小数点保留两位)
let validateNumberD2 = (rule, value, callback) => {
  if (value === "" || value == null) {
    callback(new Error("请输入" + rule.label));
  } else if (!/^([1-9]+[\d]*(.[0-9]{1,2})?)$/.test(value)) {
    callback(new Error(rule.label + "必须为数字,且小数点最多两位"));
  }
  callback();
};

// 电话号码校验规则
let validatePhone = (rule, value, callback) => {
  if (value === "" || value == null) {
    callback(new Error("请输入" + rule.label));
  } else if (
    !/^1(?:3\d|4[4-9]|5[0-35-9]|6[67]|7[013-8]|8\d|9\d)\d{8}$/.test(value)
  ) {
    callback(new Error("请输入正确的" + rule.label));
  }
  callback();
};

// 身份证校验规则
let validateIdCard = (rule, value, callback) => {
  if (value === "" || value == null) {
    callback(new Error("请输入" + rule.label));
  } else if (
    !/^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/.test(
      value
    )
  ) {
    callback(new Error("请输入正确的" + rule.label));
  }
  callback();
};

// 邮箱校验规则
let validateEmail = (rule, value, callback) => {
  if (value === "" || value == null) {
    callback(new Error("请输入" + rule.label));
  } else if (
    !/^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(value)
  ) {
    callback(new Error("请输入正确的" + rule.label));
  }
  callback();
};

// 大写字母单个校验
let validateBigEn = (rule, value, callback) => {
  if (value === "" || value == null) {
    callback(new Error("请输入" + rule.label));
  } else if (!/^[A-Z]$/.test(value)) {
    callback(new Error(rule.label + "只能是大写字母"));
  }
  callback();
};

export {
  validateNumber,
  validatePhone,
  validateIdCard,
  validateEmail,
  validateBigEn,
  validateNumberD2
};