开发常用的校验方法

开发常用的校验方法

const idCode = /(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9X]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$)/; // 身份证校验

const validateNull = (rule, value, callback) => {
  if (rule.required && (!value || value.length === 0)) {
    callback(rule.tip ? rule.tip : false);
  } else {
    callback();
  }
};

// 联系电话校验(固话+手机) /^[0-9-\(\)]{7,50}$/
const validateContact = (rule, value, callback) => {
  if (rule.required && !value) {
    callback('请填写');
  } else if (value && !(/^[0-9-]{7,50}$/.test(value))) {
    // 固定电话号码 区号:3-4位,手机号11位,固定电话7-8位
    callback('请填写正确的');
  } else {
    callback();
  }
};

// 手机号码(手机)
const validatePhone = (rule, value, callback) => {
  if (rule.required && !value) {
    callback('请填写');
  } else if (value && !(/^[1]([3-9])\d{9}$/.test(value))) {
    // 电话号码 区号:3-4位,手机号11位,固定电话7-8位
    callback('请填写正确的');
  } else {
    callback();
  }
};

// 送达地址确认书送达手机号码手机号码(手机)长度11位
const validateElectronicPhone = (rule, value, callback) => {
  if (rule.required && !value) {
    callback('请填写');
  } else if (value && !(/^[0-9]{11}$/.test(value))) {
    callback('请填写正确的');
  } else {
    callback();
  }
};

// // 邮箱校验
 const validateEmail = (rule, value, callback) => {
   if (rule.required && !value) {
     callback('请填写');
   } else if (value && !(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(value))) {
     callback('请填写正确的');
   } else {
    callback();
  }
};

// 传真校验faxNum: /^(\d{3,4}-)?\d{7,8}$/,
const validateFax = (rule, value, callback) => {
  if (rule.required && !value) {
    callback('请填写');
  } else if (value && !(/^([0-9]{2,3}-)?([0-9]{3,4}-)?([0-9]{7,8})$/.test(value))) {
    callback('请填写正确的');
  } else {
    callback();
  }
};

// 校验年龄
const validateAge = (rule, value, callback) => {
  if (rule.required && !value) {
    callback('请填写');
  } else if (value && !(/^[1-9]\d?$|^1[0-2]\d$/.test(value))) {
    callback('请填写正确的');
  } else {
    callback();
  }
};

// 身份证校验
const validateIdCard = (rule, value, callback) => {
  if (rule.required && !value) {
    callback('请填写');
  } else if (value && !(idCode.test(value))) {
    callback('请填写正确的');
  } else {
    callback();
  }
};

// 港澳居民来往内地通行证
const validateHMID = (rule, value, callback) => {
  if (rule.required && !value) {
    callback('请填写');
  } else if (value && !(/^[HM]{1}([0-9]{10}|[0-9]{8})$/.test(value))) {
    callback('请填写正确的');
  } else {
    callback();
  }
};

// 验证邮编
const validatePostcode = (rule, value, callback) => {
  if (rule.required && !value) {
    callback('请填写');
  } else if (value && !(/^\d{6}$/.test(value))) {
    callback('请填写正确的');
  } else {
    callback();
  }
};

// 设置cookie
export function setCookie (cName, value, expiredays) {
  // 过滤null,undefined,空字符串
  if (value === null || value === undefined || value === '' || value === 'null' || value === 'undefined') {
    return false
  }
  var exdate = new Date()
  exdate.setTime(exdate.getTime() + (expiredays || 1800000)) // 默认半个小时
  var v4reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/ // ipv4
  var v6reg = /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/gm // ipv6
  let hostName = window.location.hostname
  let domain
  if (hostName === 'localhost' || v4reg.test(hostName) || v6reg.test(hostName)) {
    // ipv4,ipv6,location直接存ip
    domain = hostName
  } else {
    let hostArr = hostName.split('.')
    domain = hostArr.length >= 3 ? ('.' + hostArr[hostArr.length - 3] + '.' + hostArr[hostArr.length - 2] + '.' + hostArr[hostArr.length - 1]) : hostName
  }
  document.cookie = cName + '=' + value + ';expires=' + exdate.toGMTString() + ';Domain=' + domain + ';path=/'
}
// 移除cookie
export function removeCookie (cName) {
  // document.cookie = cName + '=0;expires=' + new Date(0).toUTCString()
  setCookie(cName, 0, -1 * 1800000)
}
// 清除cookie-
export function clearAllCookie () {
  var keys = document.cookie.match(/[^ =;]+(?==)/g)
  if (keys) {
    for (var i = keys.length; i--;) {
      // document.cookie = keys[i] + '=0;expires=' + new Date(0).toUTCString()
      setCookie(keys[i], 0, -1 * 1800000)
    }
  }
};


// 将null 或者object类型数据转换为Array返回
/**
 * source为源数据,
 * level 为数据层级,是转化纯粹对象还是对象里每个属性 ,1:纯粹将source转为数组返回,2:将source每个属性转为数组
 */
export function transObj2Array (source, level) {
  let lvl = level === undefined ? 1 : +level
  let result = []
  switch (+lvl) {
    case 1:
      source === null ? result = [] : result.push(source)
      break
    case 2:
      result = {}
      for (let obj in source) {
        if (source[obj] === null || source[obj] === undefined) {
          result[obj] = []
        } else if (source[obj] instanceof Array) {
          result[obj] = source[obj]
        } else {
          result[obj] = [source[obj]]
        }
      }
      break
  }

  return result
};


// 格式化时间
export function formatTime (fmt, date) {
  // 过滤time为null undefined ''
  if (!date) {
    return ''
  }
  date = new Date(date)
  const o = {
    'M+': date.getMonth() + 1, // 月份
    'd+': date.getDate(), // 日
    'h+': date.getHours(), // 小时
    'm+': date.getMinutes(), // 分
    's+': date.getSeconds(), // 秒
    'q+': Math.floor((date.getMonth() + 3) / 3), // 季度
    'S': date.getMilliseconds() // 毫秒
  }
  if (/(y+)/.test(fmt)) {
    fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
  }
  for (var k in o) {
    if (new RegExp('(' + k + ')').test(fmt)) {
      fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)))
    }
  }
  return fmt
};

// 对象转数组
export function fmObj2Arr (data) {
  let arr = []
  for (let key in data) {
    arr.push({
      name: data[key],
      value: key
    })
  }
  return arr
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值