自定义验证和数据处理的Utils工具类,适用Vue / React / UnApp / Meter / Nodejs

备注说明: 创作都是根据自己日积月累创建的,是作者的劳动成果,不经允许禁止转载,一旦发现将承担法律责任。

  1. 创建一个Utils.js文件,复制下面代码;
  2. 在需要的地方引入或者全局引入;

话不多说,直接上代码:

/**
 * create By Jane 
 * 通用的数据处理和验证类 
 */
export default class Utils {
	/**
	 * 检查是否为空数组 空数组返回 true
	 * @param {Array} arr 数组
	 * @return Boolean
	 */
	static isEmptyArr(arr) {
		if (!Array.isArray(arr)) throw new Error('isEmptyArr 参数不是一个数组');
		if (!arr.length) return true;
		return false;
	}

	/**
	 * 是否是空  不为空false 为空true
	 * @param {any} opt 验证参数
	 * @return Boolean
	 */
	static isNull(opt) {
		if (opt == '' || opt == null || opt == undefined) return true;
		return false;
	}

	/**
	 * 校验密码
	 * @param phone
	 * @returns {boolean}
	 */
	static checkPassword(phone) {
		let reg = /^(?=.*[a-zA-Z])(?=.*\d)(?=.*[~!@#$%^&*()_+`\-={}:";'<>?,./]).{8,}$/;
		return reg.test(phone);
	}

	/**
	 * 校验手机号格式
	 * @param phone
	 * @returns {boolean}
	 */
	static checkPhone(phone) {
		let reg = /^1[3456789]\d{9}$/;
		return reg.test(phone);
	}

	/**
	 * 校验邮箱格式
	 * @param email
	 * @returns {boolean}
	 */
	static checkEmail(email) {
		let reg = /^\w+@[a-z0-9]+\.[a-z]{2,4}$/;
		return reg.test(email);
	}

	/**
	 * 校验身份证号格式
	 * @param email
	 * @returns {boolean}
	 */
	static checkCardNo(email) {
		let reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
		return reg.test(email);
	}

	/**
	 * 校验值长度 不少于6位数
	 * @param email
	 * @returns {boolean}
	 */
	static checkValueLength(password, min = 6, max = 0) {
		let regExp = new RegExp(`^[\\s\\S]{${min || ''},${max || ''}}$`);
		return regExp.test(password);
	}

	/**
	 * 电话号码加密
	 */
	static phoneEncryption(phone) {
		return phone.replace(/^(\d{3})\d{4}(\d+)/, '$1****$2')
	}
	
	/**表单验证重量、金额输入
	 * @param {Object} value
	 */
	static checkMoney(value) {
		let reg = /\d{1,}\.{0,1}\d{0,2}/;
		if (value.replace(reg, '')) {
			value = (value.match(reg) == null ? '' : value.match(reg));
		}
		if((value >= 1) && (`${value}`.indexOf(0) == 0)){
			value = parseFloat(value);
		}
		if(`${value}`.indexOf('00') == 0){
			value = 0;
		}
		return value;
	}
	
	/**验证输入的钱 
	 * @param {Object} value
	 */
	static isMoney(value) {
		var reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/;
		if (reg.test(value)) {
			return true;
		} else {
			return false;
		};
	}
// 验证是否是数字 
	static isNumber(value) {
		var reg = /^[0-9]*[1-9][0-9]*$/;
		if (reg.test(value)) {
			return true;
		} else {
			return false;
		};
	}

	/**
	 * 处理数据 :可把制定相同的key值得对象存储到下级得children中
	 */
	static mergeData(list = [], key, name = 'children') {
		const data = [];
		list.forEach((item, index) => {
			const parent = data.find((i) => i[key] === item[key]);
			if (parent) {
				parent[name].push({
					...item
				});
			} else {
				let obj = {
					...item
				};
				if (!obj[name]) {
					obj[name] = [];
				}
				obj[name].push({
					...item
				});
				data.push(obj);
			}
		});
		return data;
	}

	//生成唯一ID
	static getID() {
		const now = new Date()
		const year = now.getFullYear();
		let month = now.getMonth() + 1;
		let day = now.getDate();
		let hour = now.getHours();
		let minutes = now.getMinutes();
		let seconds = now.getSeconds();

		month = month < 10 ? '0' + month : month;
		day = day < 10 ? '0' + day : day;
		hour = hour < 10 ? '0' + hour : hour;
		minutes = minutes < 10 ? '0' + minutes : minutes;
		seconds = seconds < 10 ? '0' + seconds : seconds;

		const yyyyMMddHHmmss = `${year}${month}${day}${hour}${minutes}${seconds}`;
		const rand = Math.random().toString(10).substr(2, 10);

		return `${yyyyMMddHHmmss}${rand}`;
	};

	//生成编码唯一 
	static getAutoWasteID(name = '9') {
		const rand = Math.random().toString(8).substr(2, 8);
		return name + new Date().Format('yyMMdd') + rand;
	};
	
	static shakeFun(timer,time = 1000,callback) {
		clearTimeout(timer);
		timer = setTimeout(() => {
			callback();
		}, time);
	};
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简青子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值