记录一些常用的js工具方法的封装

1.日期格式化

/*
 *  格式化日期函数
 *  参数:
 *      {1}  ->  date : 日期对象(Date)
 *      {2}  _>  format: 格式 (yyyy-MM-dd hh:mm:ss)
 */
let dateUtil = {};
 
dateUtil.format = function(date, format) {
    var 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(format)) {
        format = format.replace(RegExp.$1, (date.getFullYear() + "").substr(4 - RegExp.$1.length));
    }
    for (var k in o) {
        if (new RegExp("(" + k + ")").test(format)) {
            format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
        }
    }
    return format;
}

export default dateUtil;

2.登录md5加密

import crypto from 'crypto';

let Md5Util = {};

Md5Util.getEncryption = function (text) {
    const md5 = crypto.createHash('md5');
    md5.update(text);
    //md5算法
    let md5password = md5.digest('hex');
    return md5password;
};

export default Md5Util;

3.正则验证手机号、姓名、邮箱、身份证

let RegExp = {
    // 检测手机号
    checkMobile(s) {
        var regu = /^[1][3,4,5,6,7,8,9][0-9]{9}$/
        if (regu.test(s)) {
            return true
        } else {
            return false
        }
    },
    // 检测姓名 必须要有两个汉字
    checkNomalName(s) {
        var regu = /^[\u4e00-\u9fa5]{2,}$/;
        if (regu.test(s)) {
            return true;
        } else {
            return false;
        }
	},
	// 检测邮箱
	isEmail(str) {
		var myReg = /^[-_A-Za-z0-9]+@([_A-Za-z0-9]+\.)+[A-Za-z0-9]{2,3}$/;
		if (myReg.test(str)) return true;
		return false;
	},
	//  检测身份证 
	checkIdCard(idCard) {
        var regIdCard = /^(^[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{4})|\d{3}[Xx])$)$/;
        //如果通过该验证,说明身份证格式正确,但准确性还需计算
        if (regIdCard.test(idCard)) {
            if (idCard.length == 18) {
                var idCardWi = new Array(7,  9,  10,  5,  8,  4,  2,  1,  6,  3,  7,  9,  10,  5,  8,  4,  2);  //将前17位加权因子保存在数组里
                var idCardY = new Array(1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2); //这是除以11后,可能产生的11位余数、验证码,也保存成数组
                var idCardWiSum = 0 //用来保存前17位各自乖以加权因子后的总和
                for (var i = 0; i < 17; i++) {
                    idCardWiSum += idCard.substring(i, i + 1) * idCardWi[i];
                }
                var idCardMod = idCardWiSum % 11; //计算出校验码所在数组的位置
                var idCardLast = idCard.substring(17); //得到最后一位身份证号码
                //如果等于2,则说明校验码是10,身份证号码最后一位应该是X
                if (idCardMod == 2) {
                    if (idCardLast == 'X' || idCardLast == 'x') {
                        return true;
                    } else {
                        return false;
                    }
                } else {
                    //用计算出的验证码与最后一位身份证号码匹配,如果一致,说明通过,否则是无效的身份证号码
                    if (idCardLast == idCardY[idCardMod]) {
                        return true;
                    } else {
                        return false;
                    }
                }
            }
        } else {
            return false
        }
	}
}

4.身份证、姓名打码

// 身份证
function idCardMask (idCard = '') {
	return idCard.substr(0, 1) + idCard.slice(1, -4).replace(/\d/g, '*') + idCard.substr(-4)
}
// 姓名
function isNameMask(str) {
    return str.substr(0,1) + new Array(str.length).join('*')
},

5.设置、获取、删除、清除sessionStorage / localStorage

function setSessionStorage(key, value) {
    sessionStorage.setItem(key, value)
}
function getSessionStorage(key) {
    return sessionStorage.getItem(key)
}
function delSessionStorage(key) {
    sessionStorage.removeItem(key) 
}
function clearSessionStorage() {
    sessionStorage.clear()
}

6.数字每3位加一个逗号

function numberFormat(val){
    if(typeof val ==="number"){
        var str = val.toString();
        var reg = str.indexOf(".") > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g;
	    val =  str.replace(reg,"$1,");
	    return val;
    }
}

7.车牌号校验

Vue.prototype._handlePlateNumInput = _handlePlateNumInput;
let plateNoReg = /^(([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z](([0-9]{5}[DF])|([DF]([A-HJ-NP-Z0-9])[0-9]{4})))|([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳使领]))$/;
function _handlePlateNumInput(data = null, fieldName = null, areaFieldName = null, isPaste = false, self = null, wildcard = '') {
    let _this = self ? self : this;
    if (isPaste) {
        setTimeout(() => {
            _handlePlateNumInput(data, fieldName, areaFieldName, false, _this);
        }, 200);
        return;
    }
    let pData = data ? data : _this;
    let plateNum = (pData[fieldName] !== undefined && pData[fieldName] !== null) ? pData[fieldName].toUpperCase() : '';
    if (areaFieldName) {
        // 判断是否为完整有效的车牌号
        if (plateNoReg.test(plateNum)) {
            _this.$set(pData, areaFieldName, plateNum.substr(0, 1));
            _this.$set(pData, fieldName, plateNum.substring(1));
            // 防止拆分后二次处理
        } else if (!plateNoReg.test(pData[areaFieldName] + pData[fieldName])) {
            plateNum = plateNum.replace(new RegExp('[^0-9a-zA-Z挂学警港澳使领' + wildcard + ']', 'ig'), '');
            _this.$set(pData, fieldName, plateNum);
        }
    } else {
        let area = plateNum.substr(0, 1);
        let num = plateNum.substring(1);
        num = num.replace(new RegExp('[^0-9a-zA-Z挂学警港澳使领' + wildcard + ']', 'ig'), '');
        _this.$set(pData, fieldName, area + num);
    }
}
<!-- 用法一 -->
<el-input v-model="formInline.province" placeholder="请输入省简称"></el-input>
<el-input v-model="formInline.num" placeholder="请输入车牌号"
    @keyup.native="_handlePlateNumInput(formInline, 'num', 'province')"
    @blur.native="_handlePlateNumInput(formInline, 'num', 'province')"
    @change.native="_handlePlateNumInput(formInline, 'num', 'province')"
    @paste.native="_handlePlateNumInput(formInline, 'num', 'province', true)"
></el-input>

<!-- 用法二 -->
<el-input v-model="formInline.PLATENO" placeholder="请输入完整车牌号"
	@keyup.native="_handlePlateNumInput(formInline, 'PLATENO')"
	@blur.native="_handlePlateNumInput(formInline, 'PLATENO')"
	@change.native="_handlePlateNumInput(formInline, 'PLATENO')"
	@paste.native="_handlePlateNumInput(formInline, 'PLATENO', null, true)"
></el-input>

8.校验日期格式yyyy-mm-dd

function isPeriodFormate(date) {
	if (date.match(/^(\d{4})(-)(\d{2})(-)(\d{2})$/)) {
    	return date;
  	} else {
    	return '';
  	}
}

9.base64转file

function dataURLtoFile(dataurl, filename) {
  	var arr = dataurl.split(',');
  	var mime = arr[0].match(/:(.*?);/)[1];
  	var bstr = window.atob(arr[1]);
  	var n = bstr.length;
  	var u8arr = new Uint8Array(n);
  	while (n--) {
    	u8arr[n] = bstr.charCodeAt(n);
    }
	return new File([u8arr], filename, { type: mime });
}

10.生成唯一值uuid

// 生成如:07854BB7-6572-496E-918B-81115BCF396E
function getUuid() {
  	var s = [];
 	var hexDigits = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  	for (var i = 0; i < 36; i++) {
    	s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
  	}
  	s[14] = '4';
  	s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);
  	s[8] = s[13] = s[18] = s[23] = '-';
  	const uuid = s.join('');
  	return uuid;
}

11.驼峰转换中划线

// 中划线转换驼峰
function toHump(name) {
  	return name.replace(/\-(\w)/g, function(all, letter) {
    	return letter.toUpperCase();
  	});
}
// 驼峰转换中划线
function toLine(name) {
	return name.replace(/([A-Z])/g, '-$1').toLowerCase();
}

12.Bytes转KB\MB…

function renderSize(filesize) {
	if (filesize == null || filesize === '' || filesize === 0) {
	    return '0KB';
    } else if (filesize <= 1024) {
        return '1KB';
    }
    var unitArr = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];
    var index = 0;
    var srcsize = parseFloat(filesize);
    index = Math.floor(Math.log(srcsize) / Math.log(1024));
    var size = srcsize / Math.pow(1024, index);
    size = size.toFixed(2);// 保留的小数位数
    return size + unitArr[index];
},
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值