1、验证篇
export function validTel(str) {
const phone = /^1[3465789]\d{9}$/
const tel = /^0\d{2,3}-?\d{7,8}$/
return phone.test(str) || tel.test(str)
}
export function validLowerCase(str) {
const reg = /^[a-z]+$/
return reg.test(str)
}
export function validUpperCase(str) {
const reg = /^[A-Z]+$/
return reg.test(str)
}
export function validAlphabets(str) {
const reg = /^[A-Za-z]+$/
return reg.test(str)
}
export function validNumber(str) {
const reg = /^[0-9]*$/
return reg.test(str)
}
export function validChinese(str) {
const reg = /^([\u4e00-\u9fa5]){0,}$/
return reg.test(str)
}
export function verifyFullName(val: string) {
if (!/^[\u4e00-\u9fa5]{1,6}(·[\u4e00-\u9fa5]{1,6}){0,2}$/.test(val)) return false;
else return true;
}
export function validUsername(str) {
const reg = /^[a-zA-Z0-9]{6,21}$/
return reg.test(str)
}
export function validIdentity(str) {
const reg = /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[12])(0[1-9]|[12]\d|3[01])\d{3}(\d|X|x)$/
return reg.test(str)
}
export function validEmail(email) {
const reg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
return reg.test(email)
}
export function isString(str) {
if (typeof str === 'string' || str instanceof String) {
return true
}
return false
}
export function isCheck(value) {
value = value.trim();
if (value === null || value === '' || value === 'undefined') {
return true;
}
return false;
}
export function verifyPassword(val: string) {
if (!/^[a-zA-Z]\w{5,15}$/.test(val)) return false;
else return true;
}
export function verifyPasswordPowerful(val: string) {
if (!/^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)(?![a-zA-z\d]+$)(?![a-zA-z!@#$%^&\.*]+$)(?![\d!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*]{6,16}$/.test(val))
return false;
else return true;
}
export function verifyPasswordStrength(val: string) {
let v = '';
if (/^(?:\d+|[a-zA-Z]+|[!@#$%^&\.*]+){6,16}$/.test(val)) v = '弱';
if (/^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*]{6,16}$/.test(val)) v = '中';
if (/^(?![a-zA-z]+$)(?!\d+$)(?![!@#$%^&\.*]+$)(?![a-zA-z\d]+$)(?![a-zA-z!@#$%^&\.*]+$)(?![\d!@#$%^&\.*]+$)[a-zA-Z\d!@#$%^&\.*]{6,16}$/.test(val))
v = '强';
return v;
}
export function verifyIPAddress(val: string) {
if (
!/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/.test(
val
)
)
return false;
else return true;
}
export function verifyPostalCode(val: string) {
if (!/^[1-9][0-9]{5}$/.test(val)) return false;
else return true;
}
export function verifyUrl(val: string) {
if (
!/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(
val
)
)
return false;
else return true;
}
export function verifyCarNum(val: string) {
if (
!/^(([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][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挂学警港澳使领]))$/.test(
val
)
)
return false;
else return true;
}
2、函数篇
export const getItem = name => {
return JSON.parse(sessionStorage.getItem(name))
}
export const setItem = (name, obj) => {
sessionStorage.setItem(name, JSON.stringify(obj))
}
export const removeitem = name => {
sessionStorage.removeItem(name)
}
export function filterEmptyData(obj){
for (let prop in obj) {
obj[prop] === '' ? delete obj[prop] : obj[prop]
}
return obj;
}
export function _debounce(fn, delay) {
var delay = delay || 200;
var timer;
var th = this;
var args = arguments;
if (timer) {
clearTimeout(timer);
}
timer = setTimeout(function () {
timer = null;
fn.apply(th, args);
}, delay);
}
export function _throttle(fn, interval) {
var last;
var timer;
var interval = interval || 200;
var th = this;
var args = arguments;
var now = +new Date();
if (last && now - last < interval) {
clearTimeout(timer);
timer = setTimeout(function () {
last = now;
fn.apply(th, args);
}, interval);
} else {
last = now;
fn.apply(th, args);
}
}
3、工具篇
export function randomNumber(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min)
}
export function objToString(params) {
let paramStr = '';
Object.keys(params)
.forEach((item) => {
if (paramStr === '') {
paramStr = `${item}=${params[item]}`;
} else {
paramStr = `${paramStr}&${item}=${params[item]}`;
}
});
console.log(paramStr);
return paramStr;
}
export function getParams(url) {
var obj = {};
if (url.indexOf('?') != -1) {
var temp1 = url.split('?');
var pram = temp1[1];
var keyValue = pram.split('&');
for (var i = 0; i < keyValue.length; i++) {
var item = keyValue[i].split('=');
var key = item[0];
var value = item[1];
obj[key] = value;
}
}
return obj;
}
export function judementSameArr(news: Array<string>, old: Array<string>): boolean {
let count = 0;
const leng = old.length;
for (let i in old) {
for (let j in news) {
if (old[i] === news[j]) count++;
}
}
return count === leng ? true : false;
}
export function isObjectValueEqual(a: { [key: string]: any }, b: { [key: string]: any }) {
if (!a || !b) return false;
let aProps = Object.getOwnPropertyNames(a);
let bProps = Object.getOwnPropertyNames(b);
if (aProps.length != bProps.length) return false;
for (let i = 0; i < aProps.length; i++) {
let propName = aProps[i];
let propA = a[propName];
let propB = b[propName];
if (!b.hasOwnProperty(propName)) return false;
if (propA instanceof Object) {
if (!isObjectValueEqual(propA, propB)) return false;
} else if (propA !== propB) {
return false;
}
}
return true;
}
export function excelFile(data, filename){
var blob = new Blob([data], {
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8",
});
var url = window.URL.createObjectURL(blob);
var aLink = document.createElement("a");
aLink.style.display = "none";
aLink.href = url;
aLink.setAttribute("download", filename);
document.body.appendChild(aLink);
aLink.click();
document.body.removeChild(aLink);
window.URL.revokeObjectURL(url);
}
export function formatDateAll(data,flag=true) {
function add0(num) {
return num < 10 ? "0" + num : num;
}
const date = new Date(data);
const Y = date.getFullYear();
const M = date.getMonth() + 1;
const D = date.getDate();
const h = date.getHours();
const m = date.getMinutes();
const s = date.getSeconds();
const dateString =
Y +
"-" +
add0(M) +
"-" +
add0(D) +
" " +
add0(h) +
":" +
add0(m) +
":" +
add0(s);
const yearString =
Y +
"-" +
add0(M) +
"-" +
add0(D)
flag?return dateString:return yearString
};
export function isOnly(list, which) {
if (list.indexOf(which) !== -1) {
if (list.indexOf(which) === list.lastIndexOf(which)) {
return true;
} else {
return false;
}
}else{
return undefined
}
};
export function nameFormat (str) {
let newStr = "";
if (str && str.length) {
for (let i = 0; i < str.length - 1; i++) {
newStr += "*";
}
newStr += str.substr(str.length - 1, 1);
}
return newStr;
};
export function trim(str) {
return str.replace(/\s*/g, "");
};
function getChildren(data, result, pid) {
for (const item of data) {
if (item.parent_id === pid) {
const newItem = { children: [], ...item }
result.push(newItem)
getChildren(data, newItem.children, item.id)
}
}
}
export function arrayToTree(data, pid) {
let result = []
getChildren(data, result, pid)
return result
}
export function treeToArray(data) {
return data.reduce((pre, cur) => {
const { children = [], ...item } = cur;
return pre.concat([{ ...item }], treeToArray(children))
}, []);
}