公共方法库 common.js

1、数据类型

function getType(data) {
  return Object.prototype.toString.call(data).slice(8, -1)
}
// getType([]) -->  'Array'
// getType({}) -->  'Object'

2、时间格式化

function $dateFmt(fmt, date) {
  let 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 (let 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;
}

3、cookie操作

function setCookie(name, value, day) {
  if (day !== 0) {     //当设置的时间等于0时,不设置expires属性,cookie在浏览器关闭后删除
    let expires = day * 24 * 60 * 60 * 1000;
    let date = new Date(+new Date() + expires);
    document.cookie = name + "=" + escape(value) + ";expires=" + date.toUTCString() + "; path=/";
  } else {
    document.cookie = name + "=" + escape(value);
  }
}

function getCookie(cookie, name) {
  var arr;
  var reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
  if (arr = cookie.match(reg)) {
    return unescape(arr[2]);
  } else {
    return null;
  }
}

function delCookie(name) {
  setCookie(name, ' ', -1);
}

4、手机号码校验

function isPhone(phone) {
  return /^((13[0-9])|(14[1|4|5|6|7|8|9])|(15([0|1|2|3|5|6|7|8|9]))|(16[2|5|6|7])|(17[0|1|2|3|5|6|7|8])|(18[0-9])|(19[1|8|9]))\d{8}$/.test(phone)  
}

5、身份证号校验

function checkIDCard(idcode){
  // 加权因子
  var weight_factor = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];
  // 校验码
  var check_code = ['1', '0', 'X' , '9', '8', '7', '6', '5', '4', '3', '2'];
  
  var code = idcode + "";
  var last = idcode[17];//最后一位
  
  var seventeen = code.substring(0,17);
  
  // ISO 7064:1983.MOD 11-2
  // 判断最后一位校验码是否正确
  var arr = seventeen.split("");
  var len = arr.length;
  var num = 0;
  for(var i = 0; i < len; i++){
    num = num + arr[i] * weight_factor[i];
  }
   
  // 获取余数
  var resisue = num%11;
  var last_no = check_code[resisue];
  
  // 格式的正则
  // 正则思路
  /*
  第一位不可能是0
  第二位到第六位可以是0-9
  第七位到第十位是年份,所以七八位为19或者20
  十一位和十二位是月份,这两位是01-12之间的数值
  十三位和十四位是日期,是从01-31之间的数值
  十五,十六,十七都是数字0-9
  十八位可能是数字0-9,也可能是X
  */
  var idcard_patter = /^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X]|[x])$/;
  
  // 判断格式是否正确
  var format = idcard_patter.test(idcode);
  
  // 返回验证结果,校验码和格式同时正确才算是合法的身份证号码
  return last.toLowerCase()== last_no.toLowerCase() && format ? true : false;
}
View Code

6、邮箱校验

function isEmail(email){
 var reg = new RegExp("^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$"); //正则表达式
 if(email === ""){ //输入不能为空
  alert("输入不能为空!");
  return false;
 }else if(!reg.test(email)){ //正则验证不通过,格式不对
  alert("验证不通过!");
  return false;
 }else{
  alert("通过!");
  return true;
 }
}

7、url 参数转对象

function parse_url(_url){
  var pattern = /(\w+)=(\w+)/ig;
  var parames = {};
  _url.replace(pattern, function(a, b, c){
    parames[b] = c;
  });
  return parames;
}

 8、终端判断

//判断访问终端
function browserVersion(){
    var u = navigator.userAgent;
    return {
        trident: u.indexOf('Trident') > -1, //IE内核
        presto: u.indexOf('Presto') > -1, //opera内核
        webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
        gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1,//火狐内核
        mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
        ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
        android: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1, //android终端
        iPhone: u.indexOf('iPhone') > -1 , //是否为iPhone或者QQHD浏览器
        iPad: u.indexOf('iPad') > -1, //是否iPad
        webApp: u.indexOf('Safari') == -1, //是否web应该程序,没有头部与底部
        weixin: u.indexOf('MicroMessenger') > -1, //是否微信 (2015-01-22新增)
        qq: u.match(/\sQQ/i) == " qq" //是否QQ
    };
}

 

 

未完待续......

 

posted @ 2020-07-31 11:04  前端杂货  阅读(544)  评论(0编辑  收藏  举报