路由
Url中取参数
function getQuery(url,name){
const u = url || window.location.search.replace('&', '&').replace(/\/$/, '');
const reg = new RegExp(`(^|&)${name}=([^&]*)(&|$)`);
const r = u.substr(u.indexOf('?') + 1).match(reg);
return r != null ? r[2] : '';
}
文件
文件转url
URL.createObjectURL(blob || file)
文件流转base64
getBase64(file) {
return new Promise((resolve, reject) => {
const reader = new FileReader()
reader.readAsDataURL(file)
reader.onload = () => resolve(reader.result)
reader.onerror = error => reject(error)
})
}
base64 转文件流
getFileStream(dataURL,mimeType) {
const binaryString = window.atob(dataURL.split(',')[1])
const arrayBuffer = new ArrayBuffer(binaryString.length)
const intArray = new Uint8Array(arrayBuffer)
for (let i = 0, j = binaryString.length; i < j; i++) {
intArray[i] = binaryString.charCodeAt(i)
}
const fileData = [intArray]
let blob
try {
blob = new Blob(fileData, { type: mimeType })
} catch (error) {
window.BlobBuilder =
window.BlobBuilder ||
window.WebKitBlobBuilder ||
window.MozBlobBuilder ||
window.MSBlobBuilder
if (error.name === 'TypeError' && window.BlobBuilder) {
const builder = new BlobBuilder()
builder.append(arrayBuffer)
blob = builder.getBlob(mimeType)
} else {
throw new Error('版本过低,不支持上传图片')
}
}
return blob
}
文件流转JSON
const blob2JSON = (blob) => {
return new Promise((resolve) => {
const file= new FileReader();
file.readAsText(blob,'utf-8');
file.onload = function() {
const result = JSON.parse(file.result);
resolve(result)
}
})
}
时间
年龄计算(精确到岁、月、小时)
function getAge(beginStr, endStr) {
const reg = new RegExp(
/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})(\s)(\d{1,2})(:)(\d{1,2})(:{0,1})(\d{0,2})$/);
const beginArr = beginStr.match(reg);
const endArr = endStr.match(reg);
let days = 0;
let month = 0;
let year = 0;
days = endArr[4] - beginArr[4];
if (days < 0) {
month = -1;
days = 30 + days;
}
month = month + (endArr[3] - beginArr[3]);
if (month < 0) {
year = -1;
month = 12 + month;
}
year = year + (endArr[1] - beginArr[1]);
const yearString = year > 0 ? year + "岁" : "";
const mnthString = month > 0 ? month + "月" : "";
const dayString = days > 0 ? days + "天" : "";
var result = "";
if (year >= 1) {
result = yearString + mnthString;
} else {
if (month >= 1) {
result = days > 0 ? mnthString + dayString : mnthString;
} else {
var begDate = new Date(beginArr[1], beginArr[3] - 1,
beginArr[4], beginArr[6], beginArr[8], beginArr[10]);
var endDate = new Date(endArr[1], endArr[3] - 1, endArr[4],
endArr[6], endArr[8], endArr[10]);
var between = (endDate.getTime() - begDate.getTime()) / 1000;
days = Math.floor(between / (24 * 3600));
var hours = Math.floor(between / 3600 - (days * 24));
var dayString = days > 0 ? days + "天" : "";
result = days >= 3 ? dayString : days * 24 + hours + "小时";
}
}
return result;
}
console.log(getAge("1980-03-22 10:1:2", "1982-03-22 10:1:2"));
console.log(getAge("1980-02-29 10:1:2", "1981-03-01 10:12:2"));
console.log(getAge("1980-03-22 10:1:2", "1980-03-23 9:1:1"));
console.log(getAge("1981-02-28 10:1:2", "1981-03-01 10:1:2"));
正则
rules: {
mobile: /^1(((3|4|5|7|8|70)[0-9])|(66|98|99|410|440))\d{8}$/,
mobileSimple: /^\d{11}$/,
email: /^[A-Za-z\d]+([-_.][A-Za-z\d]+)*@([A-Za-z\d]+[-.])+[A-Za-z]{2,4}$/,
codeMsg: /^\d{6}$/,
codeImg: /^[A-Za-z\d]{4}$/,
password: /^(?=.*[A-Z])(?=.*[a-z])^[a-zA-Z0-9]{8,20}$/,
1: /^[\u4e00-\u9fa5]{1,20}$/,
2: /^\d{0,10}$/,
3: /^(([1-9]\d?)|100)$/,
4: /^[\w-]+$/,
5: /^(([0-9]\d?)|100)$/,
6: /^(10|[1-9])$/,
roundNumber: /^(([1-9]\d?)|100)$/,
number: /^\d+$/,
number5: /^\d{0,5}$/,
number6: /^\d{0,6}$/,
percent: /(^(\d|[0-9]\d)(\.\d{1})?$)|(^100$)/,
percent2: /(^(\d|[1-9]\d)(\.\d{1})?$)|(^100$)/,
price: /^\d{1,5}(\.\d{1,2})?$/,
bigPrice: /^\d+(\.\d{1,2})?$/,
numberAndLetter: /^[A-Za-z0-9]+$/,
chart: /^[\u4e00-\u9fa5A-Za-z0-9]+$/
}