一些正则表达式

83 阅读7分钟

/**
 * @description:获取cookie值
 * @param {type}
 * @return:
 */
export function getCookie(keys) {
  var values = "";
  var cookie = document.cookie;
  var cookie_arr = cookie.split(";");
  for (var i = 0; cookie_arr[i]; i++) {
    var c_arr = cookie_arr[i].split("=");
    var _key = c_arr[0].replace(" ", "");
    if (_key == keys) {
      values = c_arr[1];
      break;
    }
  }
  return values;
}
/**
 * @description: //存储cooike这是有设定过期时间的使用示例://s20是代表20秒//h是指小时,如12小时则是:h12//d是天数,30天则:d30setCookie("name","hayden","s20");
 * @param {type}
 * @return:
 */
export function setCookie(name, value, time, cb) {
  var strsec = getSec(time);
  var exp = new Date();
  exp.setTime(exp.getTime() + strsec * 1);
  document.cookie =
    name + "=" + escape(value) + ";expires=" + exp.toGMTString();
  typeof cb == "function" && cb();
  function getSec(str) {
    var str1 = str.substring(1, str.length) * 1;
    var str2 = str.substring(0, 1);
    if (str2 == "s") {
      return str1 * 1000;
    } else if (str2 == "h") {
      return str1 * 60 * 60 * 1000;
    } else if (str2 == "d") {
      return str1 * 24 * 60 * 60 * 1000;
    }
  }
}

export function getQueryString(name) {
  var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  var r = window.location.search.substr(1).match(reg);
  if (r != null) return decodeURIComponent(r[2]);
  return 0;
}
/**
 * @description: 是否是微信浏览器
 * @param {type}
 * @return:
 */
export function isWeiXin() {
  let ua = window.navigator.userAgent.toLowerCase();
  if (ua.match(/MicroMessenger/i) == "micromessenger") {
    return true;
  } else {
    return false;
  }
}
export function mobileSystem() {
  let u = navigator.userAgent,
    app = navigator.appVersion;
  let isAndroid = u.indexOf("Android") > -1 || u.indexOf("Linux") > -1; //g
  let isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
  let m_system = "pc";
  if (isAndroid) {
    m_system = "android"; //这个是安卓操作系统
  } else if (isIOS) {
    m_system = "ios"; //这个是ios操作系统
  }
  return m_system;
}
/**
 * @param {string} format   [强烈推荐该方法]  
 * @param {number} timestamp - 时间戳
 * @return {string} 
 * 例子:
 * formatDateTwo() // "2020-2-24 13:44"
  formatDateTwo('M月D日 h:m') // "2月24日 13:45"
  formatDateTwo('h:m Y-M-D', 1582526221604) // "14:37 2020-2-24"
  formatDateTwo('h:m:s',1597399118000))  17:58:38
 * 
 */
export function formatDateTwo(format = "Y-M-D h:m", timestamp = Date.now()) {
  let date = new Date(timestamp);
  let dateInfo = {
    Y: date.getFullYear(),
    M: date.getMonth() + 1,
    D: date.getDate(),
    h: date.getHours(),
    m: date.getMinutes(),
    s: date.getSeconds(),
  };
  let formatNumber = (n) => (n >= 10 ? n : "0" + n);
  let res = format
    .replace("Y", dateInfo.Y)
    .replace("M", formatNumber(dateInfo.M))
    .replace("D", formatNumber(dateInfo.D))
    .replace("h", formatNumber(dateInfo.h))
    .replace("m", formatNumber(dateInfo.m))
    .replace("s", formatNumber(dateInfo.s));
  return res;
}
function formatNumber(n) {
  n = n.toString();
  return n[1] ? n : "0" + n;
}
/**
 * @description: 校验手机号
 * @param {type}
 * @return:
 */
export function isPhone(ev) {
  const reg = /^1\d{10}$/; //2018年6月11日16:43:53 最新支持199开头手机号
  return reg.test(ev);
}
/**
 * @description: 校验固定电话 要-区号
 * @param fixPhone{String}
 * @return:
 */
export function isFixedPhone(fixPhone) {
  let reg = /^0(\d{2,3}-)?(\d{7,8})$/;
  return reg.test(fixPhone);
}
/**
 * @description: 校验身份证号
 * @param ev{String} 身份证号
 * @return:
 */
//
export function isIdCardFun(ev) {
  let reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
  return reg.test(ev);
}
/**
 * @description: 限制中文
 * @param ev{String}
 * @return:
 */
//
export function iszhongwenFun(ev) {
  let reg = /^[\u4e00-\u9fa5]*$/;
  return reg.test(ev);
}
/**
 * @description: 判断是否四数字
 * @param ev{String}
 * @return:
 */
//
export function isCompanyNameFun(ev) {
  let reg = /[^0-9a-zA-Z()()《》·\u4e00-\u9fa5]/g;
  return reg.test(ev);
}
// 保留两位小数,但是不四舍五入
export function toFixedFun(num) {
  let numStr = num.toString();
  if (numStr.indexOf(".") !== -1) {
    let numItem = numStr.substring(0, numStr.indexOf(".") + 3);
    return Number(numItem).toFixed(2);
  } else {
    return Number(num).toFixed(2);
  }
}
export function isNumberFun(ev) {
  let reg = /^[0-9]*$/;
  return reg.test(ev);
}
// 精确度 封装方法 相加
export function addFun(num1, num2) {
  var len1 = 0;
  var len2 = 0;
  var m = 0;
  try {
    len1 = num1.toString().split(".")[1].length;
  } catch (e) {
    len1 = 0;
  }
  try {
    len2 = num2.toString().split(".")[1].length;
  } catch (e) {
    len2 = 0;
  }
  m = Math.pow(10, Math.max(len1, len2));
  var m1 = num1 * m;
  m1 = new Number(m1.toFixed(0));
  var m2 = num2 * m;
  m2 = new Number(m2.toFixed(0));
  return (m1 + m2) / m;
}
// 精确度 封装方法 减
export function subtractFun(num1, num2) {
  var len1 = 0;
  var len2 = 0;
  var m = 0;
  try {
    len1 = num1.toString().split(".")[1].length;
  } catch (e) {
    len1 = 0;
  }
  try {
    len2 = num2.toString().split(".")[1].length;
  } catch (e) {
    len2 = 0;
  }
  m = Math.pow(10, Math.max(len1, len2));
  var m1 = num1 * m;
  m1 = new Number(m1.toFixed(0));
  var m2 = num2 * m;
  m2 = new Number(m2.toFixed(0));
  return (m1 - m2) / m;
}
// 精确度 封装方法剩
export function multiplyFun(num1, num2) {
  var len1 = 0;
  var len2 = 0;
  var m = 0;
  try {
    len1 = num1.toString().split(".")[1].length;
  } catch (e) {
    len1 = 0;
  }
  try {
    len2 = num2.toString().split(".")[1].length;
  } catch (e) {
    len2 = 0;
  }
  m = Math.pow(10, Math.max(len1, len2) + 1);
  var m1 = num1 * m;
  m1 = new Number(m1.toFixed(0));
  var m2 = num2 * m;
  m2 = new Number(m2.toFixed(0));
  var m3 = m * m;
  var m4 = (m1 * m2) / m3;
  return m4;
}
// 精确度 封装方法 除
export function divideFun(num1, num2) {
  var len1 = 0;
  var len2 = 0;
  var m = 0;
  try {
    len1 = num1.toString().split(".")[1].length;
  } catch (e) {
    len1 = 0;
  }
  try {
    len2 = num2.toString().split(".")[1].length;
  } catch (e) {
    len2 = 0;
  }
  m = Math.pow(10, Math.max(len1, len2) + 1);
  var m1 = num1 * m;
  m1 = new Number(m1.toFixed(0));
  var m2 = num2 * m;
  m2 = new Number(m2.toFixed(0));
  var m3 = m1 / m2;
  return m3;
}
export const numberFormatFun = (number, decimals, decPoint, thousandsSep, roundtag) => {
  /*
      * 参数说明:
      * number:要格式化的数字
      * decimals:保留几位小数
      * dec_point:小数点符号
      * thousands_sep:千分位符号
      * roundtag:舍入参数,默认 'ceil' 向上取,'floor'向下取,'round' 四舍五入
      * */
  number = (number + '').replace(/[^0-9+-Ee.]/g, '')
  roundtag = roundtag || 'ceil' // 'ceil','floor','round'
  var n = !isFinite(+number) ? 0 : +number
  var prec = !isFinite(+decimals) ? 0 : Math.abs(decimals)
  var sep = (typeof thousandsSep === 'undefined') ? ',' : thousandsSep
  var dec = (typeof decPoint === 'undefined') ? '.' : decPoint
  var s = ''
  var toFixedFix = function (n, prec) {
    var k = Math.pow(10, prec)
    console.log()
    return '' + parseFloat(Math[roundtag](parseFloat((n * k).toFixed(prec * 2))).toFixed(prec * 2)) / k
  }
  s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.')
  var re = /(-?\d+)(\d{3})/
  while (re.test(s[0])) {
    s[0] = s[0].replace(re, '$1' + sep + '$2')
  }
  if ((s[1] || '').length < prec) {
    s[1] = s[1] || ''
    s[1] += new Array(prec - s[1].length + 1).join('0')
  }
  return s.join(dec)
}

export const formatDate = (str) => {
  return `${str.slice(0, 4)}-${str.slice(4, 6)}-${str.slice(6, 8)}`
}

export const loadJsFun=(src,id)=> {
  return new Promise((resolve,reject)=>{
    let script = document.createElement('script');
    script.type = "text/javascript";
    script.src= src;
    script.id= id;
    if(!document.getElementById(id)){
      document.body.appendChild(script);
      script.onload = ()=>{
        resolve();
      }
      script.onerror = ()=>{
        reject();
      }
    }else{
      resolve();
    }
    


    
  })
}
 


/*
 * 参数说明: elmentui 表单 正则校验封装     
 注意:    命名规则  名称+RulesFun
-------------------------------------------------------------------------------------------------------------------------------------------------------------
按理使用
 contractNo: [{ message: '请输入商务合同编号', trigger: 'blur',validator: telPhoneRulesFun,
* */

// 手机号
export const telPhoneRulesFun = (rule, value, cb) => {
  let reg = /^[1][0-9]{10}$/;
  if (!reg.test(value)) {
    return cb(new Error(rule.rulesMsg));
  } else {
    return cb();
  }
};
// 短信
export const msgRulesFun = (rule, value, cb) => {
  let reg = /^[0-9]{6}$/;
  if (!reg.test(value)) {
    return cb(new Error(rule.rulesMsg));
  } else {
    return cb();
  }
};
// 用户姓名
export const userNameRulesFun = (rule, value, cb) => {
  let reg = /^[0-9a-zA-Z()()\u4e00-\u9fa5]*$/;
  if (!reg.test(value)) {
    return cb(new Error(rule.rulesMsg));
  } else {
    return cb();
  }
};
// 用户id  
export const dealerIdRulesFun = (rule, value, cb) => {
  let reg = /^[0-9a-zA-Z]*$/;
  console.log(reg.test(value))
  if (!reg.test(value)) {
    return cb(new Error(rule.rulesMsg));
  } else {
    return cb();
  }
};
//机构编号
export const companyIdIdRulesFun = (rule, value, cb) => {
  console.log('value', value)
  let reg = /^[0-9]{9}$/;
  if (!reg.test(value)) {
    return cb(new Error(rule.rulesMsg));
  } else {
    return cb();
  }

};
// 最小金额
export const billMinMoneyRulesFun = (rule, value, cb) => {
  console.log('value', value)
  if (value != '') {
    let reg = /^[0-9]*$/;
    if (!reg.test(value)) {
      return cb(new Error());
    } else {
      return cb();
    }
  } else {
    return cb();
  }
};
export const titleRegFun = (rule, value, cb) => {

  const tsss = /[1-9]|[a-z]|[A-Z]|[()()《》.[]]|[\u4e00-\u9fa5]/g;
  const tss = /[\u4e00-\u9fa5]/g;
  let tripsW = rule.lableName ? `${rule.lableName}仅支持数字/大小写英文字母/汉字/部分特殊字符()()《》•` : '仅支持数字/大小写英文字母/汉字/部分特殊字符()()《》•'
  console.log(value == '' && rule.required)
  if (value == '' && rule.required) {
    return cb(new Error(tripsW));
  }
  if (value.match(tsss)) {

    if (value.match(tsss).length < value.length) {
      return cb(new Error(tripsW));
    }
    if (value.match(tss)) {
      if (value.match(tss).length > 50) {
        return cb(new Error(tripsW));
      }
    }
    return cb();
  }
  if (value.length === 0) {
    return cb();
  }


  return cb(new Error(tripsW));
};

export const linkmanRegFun = (rule, value, cb) => {

  const tsss = /[1-9]|[a-z]|[A-Z]|[()()《》.[]]|[\u4e00-\u9fa5]/g;
  const tss = /[\u4e00-\u9fa5]/g;
  let tripsW = rule.lableName ? `${rule.lableName}仅支持数字/大小写英文字母/汉字/部分特殊字符()()《》•` : '仅支持数字/大小写英文字母/汉字/部分特殊字符()()《》•'
  console.log(value == '' && rule.required)
  if (value == '' && rule.required) {
    return cb(new Error(tripsW));
  }
  if (value.match(tsss)) {

    if (value.match(tsss).length < value.length) {
      return cb(new Error(tripsW));
    }
    if (value.match(tss)) {
      if (value.match(tss).length > 50) {
        return cb(new Error(tripsW));
      }
    }
    return cb();
  }
  if (value.length === 0) {
    return cb();
  }


  return cb(new Error(tripsW));
};
export const intentionDesRegFun = (rule, value, cb) => {

  const tsss = /[1-9]|[a-z]|[A-Z]|[()()《》.#¥……——+-=【】{}:,。+-=_~\[\]]|[\u4e00-\u9fa5]/g;
  const tss = /[\u4e00-\u9fa5]/g;
  let tripsW = rule.lableName ? `${rule.lableName}仅支持数字/大小写英文字母/汉字/部分特殊字符~·#¥……()——+-=【】{}:《》,。+-=_[]` : '仅支持数字/大小写英文字母/汉字/部分特殊字符~·#¥……()——+-=【】{}:《》,。+-=_[]'
  console.log(value == '' && rule.required)
  if (value == '' && rule.required) {
    return cb(new Error(tripsW));
  }
  if (value.match(tsss)) {

    if (value.match(tsss).length < value.length) {
      return cb(new Error(tripsW));
    }
    if (value.match(tss)) {
      if (value.match(tss).length > 500) {
        return cb(new Error(tripsW));
      }
    }
    return cb();
  }
  if (value.length === 0) {
    return cb();
  }


  return cb(new Error(tripsW));
};





// 供应商正则
export const enterpriseNameRegFun = (rule, value, cb) => {

  const tsss = /[0-9]|[a-z]|[A-Z]|[()()《》.[]]|[\u4e00-\u9fa5]/g;
  const tss = /[\u4e00-\u9fa5]/g;
  const tssss = /[0-9]|[a-z]|[A-Z]|[()()《》.[]]/g
  let tripsW = rule.lableName ? `${rule.lableName}仅支持120个字符,60个汉字,数字/大小写英文字母/汉字/部分特殊字符()()《》•` : '仅支持120个字符,60个汉字,数字/大小写英文字母/汉字/部分特殊字符()()《》•'
  console.log(value == '' && rule.required)
  if (value == '' && rule.required) {
    return cb(new Error(tripsW));
  }

  if (value.match(tsss)) {
    
   let lengt=0

    if (value.match(tsss).length < value.length) {
      return cb(new Error(tripsW));
    }
    if(value.match(tssss)){
      console.log("非中文的",value.match(tssss).length)
      lengt=value.match(tssss).length+lengt
    }
    if (value.match(tss)) {
      console.log("中文的",value.match(tss).length)
      lengt=lengt=value.match(tss).length*2+lengt
    }
    
     console.log('总长度',lengt)
  

    if (lengt> 120) {
      return cb(new Error(tripsW));
    }

    return cb();
  }
  if (value.length === 0) {
    return cb();
  }


  return cb(new Error(tripsW));
};

export const nameRegFun = (rule, value, cb) => {

  const tsss = /[0-9]|[a-z]|[A-Z]|[()()《》.[]]|[\u4e00-\u9fa5]/g;
  const tss = /[\u4e00-\u9fa5]/g;
  let tripsW = rule.lableName ? `${rule.lableName}仅支持数字/大小写英文字母/汉字/部分特殊字符()()《》•` : '仅支持数字/大小写英文字母/汉字/部分特殊字符()()《》•'
  console.log(value == '' && rule.required)
  if (value == '' && rule.required) {
    return cb(new Error(tripsW));
  }

  if (value.match(tsss)) {

    if (value.match(tsss).length < value.length) {
      return cb(new Error(tripsW));
    }
    if (value.match(tss)) {
      if (value.match(tss).length > 60) {
        return cb(new Error(tripsW));
      }
    }
    return cb();
  }
  if (value.length === 0) {
    return cb();
  }


  return cb(new Error(tripsW));
};

/**
* @description: 获取当前url指定参数值      也是可以用官方给的方法this.$route.query.card_number
* @param {type} 
* @return: 
*/
export function getQueryString(name) {
  var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  var r = window.location.search.substr(1).match(reg);
  if (r != null) return decodeURIComponent(r[2]);
  return 0;
}


/**
* @description: 校验手机号
* @param {type} 
* @return: 
*/
export function isPhone(ev) {
  const reg = /^1\d{10}$/ //2018年6月11日16:43:53 最新支持199开头手机号
  return reg.test(ev);
}
/**
* @description: 校验固定电话 要-区号
* @param fixPhone{String} 
* @return: 
*/
export function isFixedPhone(fixPhone) {
  let reg = /^0(\d{2,3}-)?(\d{7,8})$/;
  return reg.test(fixPhone)
}


/**
* @description: 校验身份证号
* @param ev{String} 身份证号
* @return: 
*/
//
export function isIdCardFun(ev) {
  let reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
  return reg.test(ev);

}
/**
* @description: 限制中文
* @param ev{String} 
* @return: 
*/
//
export function iszhongwenFun(ev) {
  // let reg2 = /^[\u4e00-\u9fa5]/;
  // let isFlag=true
  // for(let i=0;i<ev.length;i++){
  //   if(!reg2.test(ev[i])){
  //     isFlag=false
  //     break;
  //   }
  // }
  // return isFlag;
  let reg = /^[\u4e00-\u9fa5]*$/;
  return reg.test(ev);

}



/**
* @description: 判断是否四数字
* @param ev{String} 
* @return: 
*/
//
export function isCompanyNameFun(ev) {
  let reg = /[^0-9a-zA-Z()()《》·\u4e00-\u9fa5]/g;
  return reg.test(ev);

}


// 防抖
export function debounceFun(func, delay = 200) {
  let timer

  return function () {
    console.log(func)
    let context = this
    clearTimeout(timer)
    timer = setTimeout(() => {
      func.call(context)
    }, delay);
  }()
}


/**
 * @description: 年 月 日 时分秒  多个格式调用方法[强烈推荐 formatDateTwo方法,,比较格式灵活]
 * @param {type}  
 * @return: 
 * // formatDateFilter('Y/M/D') 
 * formatDateFilter('Y/M/D h:m:s') 
 * formatDateFilter('M/D h:m:s') ;共12格式,可以参考tasettaste_app_activity/index?sell_member_id=117160
 */
export function formatDate(t, type) {

  var date = new Date(t)
  var year = date.getFullYear()
  var month = date.getMonth() + 1
  var day = date.getDate()

  var hour = date.getHours()
  var minute = date.getMinutes()
  var second = date.getSeconds()

  let retrunType = [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':'); //默认的格式 
  // console.log('type', type)
  // console.log('t', t)

  // //有参数格式
  if (type) {
    let dateStyle = '/';
    let dateStyleArray = ["/", ".", "-"];
    let newForm = Array.from(type);
    newForm = new Set(newForm);
    newForm = [...newForm];
    //console.log(newForm)

    let dateArray = [];
    let timeArray = [];

    let isYear = false; //是否年份
    let isTime = false; //是否展示时间

    for (let item of newForm) {
      if (item == ':' || item == 'm' || item == 's') {
        isTime = true;
      }
      if (item == "Y") {
        isYear = true;
      }
      if (dateStyleArray.includes(item)) {
        dateStyle = item;
      }
    }
    if (isYear) {
      dateArray = [year, month, day];
    } else {
      dateArray = [month, day];
    }
    if (isTime) {
      timeArray = [hour, minute, second];
    }
    retrunType = dateArray.map(formatNumber).join(dateStyle) + ' ' + timeArray.map(formatNumber).join(':');
  }

  return retrunType;

}



function formatNumber(n) {
  n = n.toString()
  return n[1] ? n : '0' + n
}
export const formatNumberTwo =(n) =>{
  n = n.toString()
  return n[1] ? n : '0' + n
}

export const formatStrDateFun = (str, hours) => {
  if (!str) {
    return ''
  } else {
    if (hours) {
      return `${str.slice(0, 4)}-${str.slice(4, 6)}-${str.slice(6, 8)}  ${str.slice(8, 10)}:${str.slice(10, 12)}:${str.slice(12, 14)}`
    } else {
      return `${str.slice(0, 4)}-${str.slice(4, 6)}-${str.slice(6, 8)}`
    }
  }

}

/**
 * @param {string} format   [强烈推荐该方法]  
 * @param {number} timestamp - 时间戳
 * @return {string} 
 * 例子:
 * formatDateTwo() // "2020-2-24 13:44"
  formatDateTwo('M月D日 h:m') // "2月24日 13:45"
  formatDateTwo('h:m Y-M-D', 1582526221604) // "14:37 2020-2-24"
  formatDateTwo('h:m:s',1597399118000))  17:58:38
 * 
 */
export function formatDateTwo(format = "Y-M-D h:m", timestamp = Date.now()) {
  let date = new Date(timestamp);
  let dateInfo = {
    Y: date.getFullYear(),
    M: date.getMonth() + 1,
    D: date.getDate(),
    h: date.getHours(),
    m: date.getMinutes(),
    s: date.getSeconds(),
  };
  let formatNumber = (n) => (n >= 10 ? n : "0" + n);
  let res = format
    .replace("Y", dateInfo.Y)
    .replace("M", formatNumber(dateInfo.M))
    .replace("D", formatNumber(dateInfo.D))
    .replace("h", formatNumber(dateInfo.h))
    .replace("m", formatNumber(dateInfo.m))
    .replace("s", formatNumber(dateInfo.s));
  return res;
}

/**
 * @description: 校验手机号
 * @param {type}
 * @return:
 */


// 小数转百分几 精确度
export const getNumberPreFun = (num) => {
    if (num!='') {
      return  toFixedFun(multiplyFun(num,100))
    } else{
      return 0
    }
  
}

export const linkmanRegFun = (rule, value, cb) => {

  const tsss = /[1-9]|[a-z]|[A-Z]|[()()《》.[]]|[\u4e00-\u9fa5]/g;
  const tss = /[\u4e00-\u9fa5]/g;
  let tripsW = rule.lableName ? `${rule.lableName}仅支持数字/大小写英文字母/汉字/部分特殊字符()()《》•` : '仅支持数字/大小写英文字母/汉字/部分特殊字符()()《》•'
  console.log(value == '' && rule.required)
  if (value == '' && rule.required) {
    return cb(new Error(tripsW));
  }
  if (value.match(tsss)) {

    if (value.match(tsss).length < value.length) {
      return cb(new Error(tripsW));
    }
    if (value.match(tss)) {
      if (value.match(tss).length > 50) {
        return cb(new Error(tripsW));
      }
    }
    return cb();
  }
  if (value.length === 0) {
    return cb();
  }


  return cb(new Error(tripsW));
};




/**
 * @description: 验证浏览器版本是否高于谷歌80
 * @return {Boolean}
 */
export function getBrowserVersion() {

  const appVersion = navigator.appVersion //获取浏览器版本信息
  const index = appVersion.indexOf('Chrome/') //谷歌浏览器的版本信息位置
  const ChromeStr = appVersion.substring(index + 7, appVersion.length) //以谷歌浏览器信息开始的字符串('Chrome/'占7个字符)
  const index_point = ChromeStr.indexOf('.') //第一个.的位置
  const ChromeVersions = ChromeStr.substring(0, index_point) //谷歌浏览器大版本号
  console.log('userAgent', navigator.userAgent)
  console.log('浏览器信息', appVersion)
  console.log('谷歌浏览器的版本号', ChromeVersions)
  if (appVersion.includes('Chrome')) {
    //包含Chrome字样则判断版本
    if (ChromeVersions >= 80) {
      return true
    } else {
      return false
    }
  } else {
    //不包含Chrome字样直接返回false
    return false
  }
}

// 获取浏览器类型
export function getBrowser() {

  let appVersion = navigator.appVersion //获取浏览器版本信息
  let index = appVersion.indexOf('Chrome/') //谷歌浏览器的版本信息位置
  let ChromeStr = appVersion.substring(index + 7, appVersion.length) //以谷歌浏览器信息开始的字符串('Chrome/'占7个字符)
  let index_point = ChromeStr.indexOf('.') //第一个.的位置
  let ChromeVersions = ChromeStr.substring(0, index_point) //谷歌浏览器大版本号



  // 获取浏览器 userAgent
  var ua = navigator.userAgent
  console.log('浏览器ua', ua)
  console.log('浏览器的版本号', ChromeVersions)

  // 是否为 Opera
  var isOpera = ua.indexOf('Opera') > -1
  // 返回结果
  if (isOpera) {
    return {
      type: 'Opera',
      versions: ChromeVersions
    }
  }

  // 是否为 IE
  var isIE = (ua.indexOf('compatible') > -1) && (ua.indexOf('MSIE') > -1) && !isOpera
  var isIE11 = (ua.indexOf('Trident') > -1) && (ua.indexOf("rv:11.0") > -1)
  // 返回结果
  if (isIE11) {
    return 'IE11'
  } else if (isIE) {
    // 检测是否匹配
    var re = new RegExp('MSIE (\\d+\\.\\d+);')
    re.test(ua)
    // 获取版本
    var ver = parseFloat(RegExp["$1"])
    // 返回结果
    if (ver == 7) {
      return 'IE7'
    } else if (ver == 8) {
      return 'IE8'
    } else if (ver == 9) {
      return 'IE9'
    } else if (ver == 10) {
      return 'IE10'
    } else { return "IE" }
  }

  // 是否为 Edge
  var isEdge = ua.indexOf("Edg") > -1
  // 返回结果
  if (isEdge) {
    return {
      type: 'Edg',
      versions: ChromeVersions
    }
  }

  // 是否为 Firefox
  var isFirefox = ua.indexOf("Firefox") > -1
  // 返回结果
  if (isFirefox) {
    return {
      type: 'Firefox',
      versions: ChromeVersions
    }
  }

  // 是否为 Safari
  var isSafari = (ua.indexOf("Safari") > -1) && (ua.indexOf("Chrome") == -1)
  // 返回结果
  if (isSafari) {
    return {
      type: "Safari",
      versions: ChromeVersions
    }
  }

  // 是否为 Chrome
  var isChrome = (ua.indexOf("Chrome") > -1) && (ua.indexOf("Safari") > -1) && (ua.indexOf("Edg") == -1)
  // 返回结果
  if (isChrome) {
    return {
      type: 'Chrome',
      versions: ChromeVersions
    }
  }

  // 是否为 UC
  var isUC = ua.indexOf("UBrowser") > -1
  // 返回结果
  if (isUC) {
    return {
      type: 'UC',
      versions: ChromeVersions
    }
  }

  // 是否为 QQ
  var isQQ = ua.indexOf("QQBrowser") > -1
  // 返回结果
  if (isUC) {
    return {
      type: 'QQ',
      versions: ChromeVersions
    }
  }

  // 都不是
  return {
    type: '',
    versions: ''
  }
}