/*
 * @Author: 许宏杰
 * @Date: 2021-12-28 16:05:36
 * @LastEditors: 许宏杰
 * @LastEditTime: 2022-03-24 14:25:05
 * @FilePath: \taicangpopulationpc\src\utils\regex\formRegex.js
 */
//以key:value方式一次性全部导出
export default {
  // 邮箱
  checkEmail: (rule, value, callback) => {
    const mailReg = /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-])+/;
    if (!value) {
      return callback(new Error("邮箱不能为空"));
    }
    setTimeout(() => {
      if (mailReg.test(value)) {
        callback();
      } else {
        callback(new Error("请输入正确的邮箱格式"));
      }
    }, 100);
  },
  //手机号
  checkPhone: (rule, value, callback) => {
    const phoneReg = /^1[3|4|5|7|8][0-9]{9}$/;
    if (!value) {
      return callback(new Error("电话号码不能为空"));
    }
    setTimeout(() => {
      // Number.isInteger是es6验证数字是否为整数的方法,但是我实际用的时候输入的数字总是识别成字符串
      // 所以我就在前面加了一个+实现隐式转换
      if (!Number.isInteger(+value)) {
        callback(new Error("请输入数字值"));
      } else {
        if (phoneReg.test(value)) {
          callback();
        } else {
          callback(new Error("电话号码格式不正确"));
        }
      }
    }, 100);
  },
  //正整数大于0
  checkcontractLeaseArea: (rule, value, callback) => {
    const contractLeaseArea = /^[1-9]\d*$/;
    if (!value) {
      return callback(new Error("数字不能小于且等于0"));
    }
    setTimeout(() => {
      if (contractLeaseArea.test(value)) {
        callback();
      } else {
        callback(new Error("请输入大于0的数字"));
      }
    }, 100);
  },
  //只接受中文汉字
  ChineseCharacters(text) {
    let personalName = (rule, value, callback) => {
      const names = /^[\u4e00-\u9fa5]{2,15}$/;
      if (!value) {
        return callback(new Error(`${text}名称不能为空`));
      }
      setTimeout(() => {
        if (names.test(value)) {
          callback();
        } else {
          callback(new Error(`${text}只能为中文汉字`));
        }
      }, 100);
    };
    return personalName;
  },
  //身份证
  idCard: (rule, value, callback) => {
    let id =
      /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;
    if (!value) {
      return callback(new Error("身份证号码不能为空"));
    }
    setTimeout(() => {
      if (id.test(value)) {
        callback();
      } else {
        callback(new Error("请输入正确的身份证号码"));
      }
    }, 100);
  },
};
