一.检验字符串是否符合某个标准
下面为一个js/ts文件,页面中引用该方法即可。下图为该js/ts文件的大致模板。
文件头部:
export default {
1.监测字符串是否符合 '2000-01-01' 格式
// 监测字符串是否符合 '2000-01-01' 格式
isTime1(str) {
if (str) {
if (Number(str.slice(0, 4))
&& str.slice(4, 5) === '-'
&& Number(str.slice(5, 7))
&& str.slice(7, 8) === '-'
&& Number(str.slice(8, 10))
&& str.length === 10) {
return true
}
}
},
2.监测是否为空值
// 判断是否为空值 ⬇⬇⬇
isNullValue(value) {
return [null, undefined, ''].includes(value)
},
3.监测是否全数字字符
// 监测是否全数字字符 ⬇⬇⬇
isNumberValue(str) {
var patrn = /^[0-9]*$/im;
if (!patrn.test(str)) {// 如果不是纯数字返回false
return false;
}
return true;
},
4.监测身份证格式是否正确
// 监测身份证格式是否正确 ⬇⬇⬇
isIdCardValue(str) {
var patrn = /^[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]$/im;
if (!patrn.test(str)) {// 如果正确返回false
return false;
}
return true;
},
5.监测只能输入英文和数字
// 监测只能输入英文和数字 ⬇⬇⬇
isEnglishNumber(str) {
var patrn = /^[0-9a-zA-Z_]*$/;
if (!patrn.test(str)) {// 如果正确返回false
return false;
}
return true;
},
6.监测邮箱格式是否正确
只允许英文字母、数字、下划线、英文句号、以及中划线组成
// 监测邮箱只允许英文字母、数字、下划线、英文句号、以及中划线组成
isEmail(str) {
var patrn = /^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$/;
if (!patrn.test(str)) {// 如果正确返回false
return false;
}
return true;
},
7.监测是否是正数
// 正数的正则表达式:
isPositiveNumber(str) {
// true 1、0.1、 0.001、99.01
// false 00.1、1.00、1.0
var patrn = /^[+]{0,1}[1-9]\d*$|^[+]{0,1}(0.\d*[1-9])$|^[+]{0,1}([1-9]\d*.\d*[1-9])$/;
if (!patrn.test(str)) {// 如果正确返回false
return false;
}
return true;
},
8.监测是否是正浮点数
// 监测是否是正浮点数 ⬇⬇⬇
isFloatNumber(str) {
var patrn = /^[1-9]\d*.\d*|0.\d*[1-9]\d*$/;
if (!patrn.test(str)) {// 如果不是纯数字返回false
return false;
}
return true;
},
9.监测手机号格式是否正确(国内)
// 监测手机号格式是否正确 ⬇⬇⬇
isPhoneNoValue(str) {
var patrn = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
if (!patrn.test(str)) {// 如果正确返回false
return false;
}
return true;
},
10.监测字符串长度
一个汉字==两个字符
// 监测字符串长度 一个汉字==两个字符
realLength(str) {
if (str) {
return str.replace(/[^\x00-\xff]/g, "**").length; // [^\x00-\xff] - 匹配非双字节的字符
}
},
11.监测字符串是否符合 '2000年01月01日' 格式
// 监测字符串是否符合 '2000年01月01日' 格式
isTime2(str) {
if (str) {
if (Number(str.slice(0, 4))
&& str.slice(4, 5) === '年'
&& Number(str.slice(5, 7))
&& str.slice(7, 8) === '月'
&& Number(str.slice(8, 10))
&& str.slice(10, 11) === '日'
&& str.length === 11) {
return true
}
}
},
12.监测密码是否含有大小写字母,数字,特殊字符,6到20为之间
// 监测密码是否含有大小写字母,数字,特殊字符,6到20为之间
isPaaword(str) {
var patrn = /^(?=.*[0-9].*)(?=.*[A-Z].*)(?=.*[a-z].*)(?=.*[`~!@#$%^&*()_-+=<>.?:"{}].*).{6,20}$/;
if (!patrn.test(str)) {// 如果正确返回false
return false;
}
return true;
},
13.把字符串'20000101'处理成'2000-01-01'格式
// 把字符串'20000101'处理成'2000-01-01'格式
setTime4(str) {
if (str) {
return str.slice(0, 4) + '-' + str.slice(4, 6) + '-' + str.slice(6, 8)
}
},
14.把字符串'20000101'处理成'2000年01月01日'格式
// 把字符串'20000101'处理成'2000年01月01日'格式
setTime4(str) {
if (str) {
return str.slice(0, 4) + '年' + str.slice(4, 6) + '月' + str.slice(6, 8) + '日'
}
},
15.随机获取buildUUID(32位)
列:d534c9fa3f4a44c0b23d2c90fd8d2cea
//获取buildUUID(32位)
getBuildUUID() {
const hexList: string[] = [];
for (let i = 0; i <= 15; i++) {
hexList[i] = i.toString(16);
}
let uuid = '';
for (let i = 1; i <= 36; i++) {
if (i === 9 || i === 14 || i === 19 || i === 24) {
uuid += '-';
} else if (i === 15) {
uuid += 4;
} else if (i === 20) {
uuid += hexList[(Math.random() * 4) | 8];
} else {
uuid += hexList[(Math.random() * 16) | 0];
}
}
return uuid.replace(/-/g, '');
},
16.获取当前时间('YYYY-MM-DD HH:mm:ss')
需先引入moment
import moment from 'moment';
// 获取当前时间
getTime() {
return moment().format('YYYY-MM-DD HH:mm:ss');
},
17.监测'YYYY-MM-DD HH:mm:ss'时间格式
// 验证'YYYY-MM-DD HH:mm:ss'时间格式
isTime(str) {
var patrn = /^(\d{1,4})(-|/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/;
if (!patrn.test(str)) {// 如果正确返回false
return false;
}
return true;
},
18.获取当前时间后面的某一(number)天
// 获取当前时间后面的某一(number)天
getTimeDay(number) {
var dd = new Date();
dd.setDate(dd.getDate() + number);//获取number天后的日期
var y = dd.getFullYear();
var m = dd.getMonth() + 1;//获取当前月份的日期
var d = dd.getDate();
var h = dd.getHours();
var min = dd.getMinutes();
return y + "-" + m + "-" + d + " " + h + ":" + min;
},
19.JS判断一个数组中是否包含另一个数组
方法一:使用filter,indexOf
let arr1=[1,2,3]
let arr2=[1,3,4,2]
let arrNew = arr1.filter(function(val){ return arr2.indexOf(val)>-1})
arrNew.length==arr1.length
方法二:使用Underscore.js
let arr1=[1,2,3]
let arr2=[1,3,4,2]
let arrNew=_.intersection(arr1,arr2)
arrNew.length==arr1.length
20.1661756385019时间戳转日期字符串
21.Tue May 15 2018 00:00:00 GMT+0800 (中国标准时间)转日期字符串
22.传值为空则获取今日日期字符串
/*
* @Author: zxl 2641337277@qq.com
* @Date: 2022-08-29 11:42:57
* @LastEditors: zxl 2641337277@qq.com
* @LastEditTime: 2022-08-29 13:53:04
* @FilePath: /taizhou-dispatching-command-web/src/utils/timeFun.ts
* @Description1: 1661756385019时间戳转日期字符串
* @Description2: Tue May 15 2018 00:00:00 GMT+0800 (中国标准时间)转日期字符串
* @Description3: 传值为空则获取今日日期字符串
*/
getStandardTime(str) {
var date;
if (Number(str) > 0) {
date = new Date(Number(str));
} else if (str) {
date = new Date(str);
} else {
date = new Date();
}
let y = date.getFullYear()
let M = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1
let D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
let h = date.getHours() < 10 ? '0' + date.getHours() : date.getHours()
let m = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
let s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
return y + '-' + M + '-' + D + ' ' + h + ':' + m + ':' + s
},
23.日期字符串转Tue May 15 2018 00:00:00 GMT+0800 (中国标准时间)
/*
* @Author: zxl 2641337277@qq.com
* @Date: 2022-08-29 11:42:57
* @LastEditors: zxl 2641337277@qq.com
* @LastEditTime: 2022-08-29 13:53:04
* @FilePath: /taizhou-dispatching-command-web/src/utils/timeFun.ts
* @Description: 日期字符串转Tue May 15 2018 00:00:00 GMT+0800 (中国标准时间)
*/
parserDate(date) {
var t = Date.parse(date)
if (!isNaN(t)) {
return new Date(Date.parse(date.replace(/-/g, '/')))
}
},
文件结尾:
}
二.filter,map和reduce
filter()函数的作用主要是对数组进行条件过滤,条件为Boolean值,不是true就是false
1.筛选数组中不符合某些条件的数据
const arr = ['11', '52', '15', '88', '68', '421', '23', '64'];
let totalFirst = arr.filter(function (e) {
return Number(e) < 400;
});
console.log(totalFirst);
//['11', '52', '15', '88', '68', '23', '64']
map()函数的主要作用是对过滤之后的新数组进行重新映射
2.根据筛选后的数据对每项进行二倍处理
let totalmap = arr
.filter(function (e) {
return Number(e) < 400;
})
.map(function (e) {
return Number(e) * 2;
});
console.log(totalmap);
//[22, 104, 30, 176, 136, 46, 128]
reduce()函数的主要作用是对数组的结果进行汇总,改函数至少要有两个参数
reduce共有四个参数,分别为:reduce(total,currentValue,currentIndex,arr)
| total | 必需。初始值, 或者计算结束后的返回值。 |
|---|---|
| currentValue | 必需。当前元素 |
| currentIndex | 可选。当前元素的索引 |
| arr | 可选。当前元素所属的数组对象。 |
3.根据二倍处理后的数据进行求和处理
let totalreduce = arr
.filter(function (e) {
return Number(e) < 400;
})
.map(function (e) {
return Number(e) * 2;
}).reduce(function(pre,e){
return pre+Number(e)
});
console.log(totalreduce);
//642