const toString = Object.prototype.toString; export function is(val, type) { return toString.call(val) === `[object ${type}]`; } export function isDef(val) { return typeof val !== 'undefined'; } export function isUnDef(val) { return !isDef(val); } export function isObject(val) { return val !== null && is(val, 'Object'); } export function isEmpty(val) { if (isArray(val) || isString(val)) { return val.length === 0; } if (val instanceof Map || val instanceof Set) { return val.size === 0; } if (isObject(val)) { return Object.keys(val).length === 0; } return false; } export function isDate(val) { return is(val, 'Date'); } export function isNull(val) { return val === null; } export function isNullAndUnDef(val) { return isUnDef(val) && isNull(val); } export function isNullOrUnDef(val) { return isUnDef(val) || isNull(val); } export function isNumber(val) { return is(val, 'Number'); } export function isPromise(val) { return is(val, 'Promise') && isObject(val) && isFunction(val.then) && isFunction(val.catch); } export function isString(val) { return is(val, 'String'); } export function isFunction(val) { return typeof val === 'function'; } export function isBoolean(val) { return is(val, 'Boolean'); } export function isRegExp(val) { return is(val, 'RegExp'); } export function isArray(val) { return val && Array.isArray(val); } export function isMap(val) { return is(val, 'Map'); } export function isPhone(phone) { const reg = /^(?:(?:\+|00)86)?1(?:(?:3[\d])|(?:4[5-79])|(?:5[0-35-9])|(?:6[5-7])|(?:7[0-8])|(?:8[\d])|(?:9[189]))\d{8}$/; return reg.test(phone); } export function isEmail(email) { const reg = /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/; return reg.test(email); } // 常用正则 let Regular = { digits: /^\d+$/, // 正整数 letter: /^[a-zA-Z]*$/, // 数字 chinese: /^[\u4e00-\u9fa5]+$/gi, //中文 phone: /0?(13|14|15|17|18|19)[0-9]{9}/, // 手机号 amount: /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/, // 金额。值允许两位小数 email: /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/, // 邮箱 idcard: /^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/, // 身份证 empty: (value) => { // 是否为空 switch (typeof value) { case 'undefined': return true; case 'string': if (value.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g, '').length == 0) return true; break; case 'boolean': if (!value) return true; break; case 'number': if (0 === value || isNaN(value)) return true; break; case 'object': if (null === value || value.length === 0) return true; for (var i in value) { return false; } return true; } return false; } }