JS常用工具函数

  1. 日期格式化
formatAllDate (param1, DateType, param2) {
        // 当formatDateType=1时候,将数据库得到的时间字符串改为date类型 Mon Feb 26 2018 00:00:00 GMT+0800 (中国标准时间) (20180215125959|formatAllDate(1))
        if (!param1) {
            return '';
        }
        if (param1 === '0') {
            return '';
        }
        if (DateType === 1) {
            let year = param1.substr(0, 4);
            let month = param1.substr(4, 2);
            let day = param1.substr(6, 2);
            let hour, minute, second;
            if (param1.length > 8) {
                hour = param1.substr(8, 2);
                minute = param1.substr(10, 2);
                second = param1.substr(12, 2);
            } else {
                hour = 0;
                minute = 0;
                second = 0;
            }
            let date = new Date();
            date.setFullYear(year, month - 1, day);
            date.setHours(hour, minute, second);
            return date;
        } else if (DateType === 2) {
            //当formatDateType=2时候 将Date对象按格式输出 yyyy-MM-dd hh:mm:ss 用法 (date |formatAllDate(2,'yyyy-MM-dd hh:mm:ss')) 格式自己想要什么就写什么
            let date = new Date(param1);
            let o = {
                'M+': date.getMonth() + 1, //月份
                'd+': date.getDate(), //日
                'h+': date.getHours(), //小时
                'm+': date.getMinutes(), //分
                's+': date.getSeconds(), //秒
            };
            if (/(y+)/.test(param2)) {
                param2 = param2.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
            }
            for (let k in o) {
                if (new RegExp('(' + k + ')').test(param2)) {
                    param2 = param2.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)));
                }
            }
            return param2;
        } else if (DateType === 3) {
            //当formatDateType=3时候 将数据库的时间字符串'20180101121212'或者'20180101'转换为需要的时间格式'YYYY-MM-dd hh:mm:ss'或者 'MM月dd日,YYYY年'等’
            let year = param1.substr(0, 4);
            let month = param1.substr(4, 2);
            let day = param1.substr(6, 2);
            let hour, minute, second;
            if (param1.length > 8) {
                hour = param1.substr(8, 2);
                minute = param1.substr(10, 2);
                second = param1.substr(12, 2);
            } else {
                hour = 0;
                minute = 0;
                second = 0;
            }
            let date = new Date();
            date.setFullYear(year, month - 1, day);
            date.setHours(hour, minute, second);
            let o = {
                'M+': date.getMonth() + 1, //月份
                'd+': date.getDate(), //日
                'h+': date.getHours(), //小时
                'm+': date.getMinutes(), //分
                's+': date.getSeconds(), //秒
            };
            if (/(y+)/.test(param2)) {
                param2 = param2.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
            }
            for (let k in o) {
                if (new RegExp('(' + k + ')').test(param2)) {
                    param2 = param2.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k]).length)));
                }
            }
            return param2;
        } else {
            return ''
        }
    },
  1. 脱敏姓名,默认脱敏姓名的最后一位
   /**
     * 脱敏姓名,默认脱敏姓名的最后一位
     * @params val [string] 姓名
     * @params num [int] 脱敏的位数
     * @params type [string] 开头或结尾开始脱敏和中间脱敏
     * @author crx 2018-04-16
     */
    formatName (val, num, type) {
        if (!num) {
            //没有指定则脱敏1位
            num = 1;
        }
        //如果要隐藏的位数大于字符串本身,则取字符串-1
        if (val.length <= num) {
            num = val.length - 1;
        }
        //若是中间脱敏则隐藏字符串中间所有的字符只保留头尾
        if (type === 'center') {
            num = val.length - 2;
        }
        let valStr = '';
        //脱敏多少位,显示多少个*号
        for (let i = 0; i < num; i++) {
            valStr += '*';
        }
        //默认从结尾开始脱敏
        if (!type) {
            type = 'right';
        }
        //根据脱敏类型进行脱敏
        if (type === 'right') {
            val = val.substring(0, val.length - num);
            val += valStr;
        } else if (type === 'left') {
            val = val.substring(num, val.length);
            val = valStr + val;
        } else if (type === 'center') {
            let start = val.substring(0, 1);
            let end = val.substring(val.length - 1, val.length);
            val = start + valStr + end;
        }
        return val;
    },
  1. 字符串日期简单转换
//简单的把字符串日期(20180206)转成(2018-02-06),用法(dateStr |dateFormat())
   dateFormat (param1) {
       if (!/\d{8}/.test(param1)) {
           return param1;
       }
       return param1.replace(/(\d{4})(\d{2})(\d{2})/, '$1-$2-$3');
   },
  1. 分割函数
//可以将任何字符串以4位4位分隔,可用于银行卡或者手机号的格式化都可以  张和杰
  fourSpace (val) {
      if (val) {
          return val.replace(/\D/g, '').replace(/(\d{4})(?=\d)/g, '$1 ');
      }
      return '';

  },
  1. 处理金额输入
filterMoney(val) {
        val= val.replace(/[^\d.]/g,"");  //清除“数字”和“.”以外的字符  
        val =  val.replace(/\.{2,}/g,"."); //只保留第一个. 清除多余的  
        val =  val.replace(".","$#$").replace(/\./g,"").replace("$#$","."); 
        val =  val.replace(/^(\-)*(\d+)\.(\d\d).*$/,'$1$2.$3');//只能输入两个小数  
       if( val.indexOf(".")< 0 && val !=""){//以上已经过滤,此处控制的是如果没有小数点,首位不能为类似于 01、02的金额 
        val= parseFloat( val)+''; 
        }
        return val
    },
  1. 分割手机号码344
 phoneSeparated (phoneNumber) {
        let tel = phoneNumber;
        if (tel) {
            tel = tel.substring(0, 3) + ' ' + tel.substring(3, 7) + ' ' + tel.substring(7, 11);
        }
        return tel;
    },
  1. 脱敏手机号码 前四后三 中间四个*

    // 脱敏手机号码 前四后三 中间四个*
    formatPhone (phone) {
        if (typeof phone !== 'string') {
            return '';
        }

        if (phone.length < 7) {
            return phone;
        }

        let reg = /^(\d{3})[\s\S]+(\d{4})$/;
        let value = phone.toString().replace(reg, '$1****$2');
        return value;
    },

你可能感兴趣的:(javascript,开发语言,ecmascript)