// 验证手机号是否合格
export function isPhone(phoneStr) {
let myreg = /^[1][3,4,5,7,8,9][0-9]{9}$/;
if (!myreg.test(phoneStr)) {
return false;
} else {
return true;
}
}
// 验证身份证号是否合格
export function isIdCard(idCardStr) {
let idcardReg = /^[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{3}([0-9]|X)$/
if (idcardReg.test(idCardStr)) {
return true
} else {
return false
}
}
// 验证车牌号是否合格
export function isVehicleNumber(vehicleNumber) {
let xreg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/;
let creg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;
if (vehicleNumber.length == 7) {
return creg.test(vehicleNumber);
} else if (vehicleNumber.length == 8) {
return xreg.test(vehicleNumber);
} else {
return false;
}
}
// 验证字符串是否为空(也不能为纯空格)
export function isEmptyString(string) {
if (string == undefined ||
typeof string == "undefined" ||
!string ||
string == null ||
string == '' ||
/^\s+$/gi.test(string)) {
return true;
} else {
return false;
}
}
// 生日转为年龄( 精确到月份)
export function birsdayToAge(birsday) {
let aDate = new Date();
let thisYear = aDate.getFullYear();
let bDate = new Date(birsday);
let brith = bDate.getFullYear();
let age = thisYear - brith;
if (aDate.getMonth() == bDate.getMonth()) {
if (aDate.getDate() < bDate.getDate()) {
age = age - 1;
}
} else {
if (aDate.getMonth() < bDate.getMonth()) {
age = age - 1;
}
}
return age
}
// 去除参数空数据(用于向后台传递参数的时候)
export function filterEmptyData(obj) {
for (let prop in obj) {
obj[prop] === '' ? delete obj[prop] : obj[prop]
}
return obj;
}
//判断数据是 null 和 undefined 的情况
export function getType(val) {
if (val == null) {
return val + "";
}
return typeof (val) === "object" ?
Object.prototype.toString.call(val).slice(8, -1).toLowerCase() :
typeof (val);
}
/**
* @desc 函数防抖,用于多次触发,只执行 规定时间后再执行有且只有一次触发 的情况。便于优化性能
* @param {function} func - 需要使用函数防抖的被执行的函数。必传
* @param {Number} wait - 多少毫秒之内触发,只执行第一次,默认1000ms。可以不传
*/
export function debounce(func, wait) {
let timeout = null
wait = wait || 1000
return function () {
let context = this
let args = arguments
if (timeout) clearTimeout(timeout)
let callNow = !timeout
timeout = setTimeout(() => {
timeout = null
}, wait)
if (callNow) func.apply(context, args)
}
}
/**
* 节流函数, 用于将多次执行变为每隔一段时间执行
* @param fn 事件触发的操作
* @param delay 间隔多少毫秒需要触发一次事件
*/
export function throttle2(fn, delay) {
let timer = null;
return function () {
let context = this;
let args = arguments;
if (!timer) {
timer = setTimeout(function () {
fn.apply(context, args);
clearTimeout(timer);
}, delay);
}
};
}
// 时间戳转化成日期格式
export function timesSeconds(timestamp) {
if (!timestamp) {
return;
}
var date = new Date(timestamp); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
const Y = date.getFullYear() + "-";
const M =
(date.getMonth() + 1 < 10 ?
"0" + (date.getMonth() + 1) :
date.getMonth() + 1) + "-";
const D = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
var h = null;
var m = null;
var s = null;
if (date.getHours()) {
h = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
} else {
h = "00";
}
if (date.getMinutes()) {
m =
date.getMinutes() < 10 ?
":" + "0" + date.getMinutes() :
":" + date.getMinutes();
} else {
m = ":00";
}
if (date.getSeconds()) {
s =
date.getSeconds() < 10 ?
":" + "0" + date.getSeconds() :
":" + date.getSeconds();
} else {
s = ":00";
}
return Y + M + D + "\xa0\xa0\xa0" + h + m + s;
}
// 数组扁平化
export function flatten(arr) {
return arr.reduce((result, item) => {
return result.concat(Array.isArray(item) ? flatten(item) : item)
}, [])
}
vue 常用方法封装
于 2022-02-24 14:19:42 首次发布