ts封装格式化时间-手机号校验-邮箱校验-身份证校验-信息脱敏-密码强度检测
星月 8/1/2023 ts
# ts封装格式化时间-手机号校验-邮箱校验-身份证校验-信息脱敏-密码强度检测
class Tools {
isEmptyStr(input) {
if (input === null || input === undefined || input === '') {
return true;
}
return false;
}
interfacePropertyToString = (property: (object: any) => void) => {
const chaine = property.toString();
const arr = chaine.match(/[\s\S]*{[\s\S]*\.([^\.; ]*)[ ;\n]*}/);
return arr[1];
};
/**
* 格式化时间
timeFormat | date(timestamp, format = "yyyy-mm-dd")
该函数必须传入第一个参数,第二个参数是可选的,函数返回一个格式化好的时间。
time <String> 任何合法的时间格式
format <String> 时间格式,可选。
默认为yyyy-mm-dd,年为"yyyy",月为"mm",日为"dd",时为"hh",分为"MM",秒为"ss",格式可以自由搭配
如: yyyy:mm:dd,yyyy-mm-dd,yyyy年mm月dd日,yyyy年mm月dd日 hh时MM分ss秒,yyyy/mm/dd/,MM:ss等组合
*/
timeFormat(dateTime = null, fmt = 'yyyy-mm-dd') {
// 如果为null,则格式化当前时间
if (!dateTime) dateTime = Number(new Date());
// 如果dateTime长度为10或者13,则为秒和毫秒的时间戳,如果超过13位,则为其他的时间格式
if (dateTime.toString().length === 10) dateTime *= 1000;
const date = new Date(dateTime);
let ret;
const opt = {
'y+': date.getFullYear().toString(), // 年
'm+': (date.getMonth() + 1).toString(), // 月
'd+': date.getDate().toString(), // 日
'h+': date.getHours().toString(), // 时
'M+': date.getMinutes().toString(), // 分
's+': date.getSeconds().toString(), // 秒
// 有其他格式化字符需求可以继续添加,必须转化成字符串
};
for (const k in opt) {
ret = new RegExp(`(${k})`).exec(fmt);
if (ret) {
fmt = fmt.replace(ret[1], (ret[1].length === 1) ? (opt[k]) : (opt[k].padStart(ret[1].length, '0')));
}
}
return fmt;
}
// 手机号校验
isPhone(phoneStr) {
const myreg = /^((13[0-9])|(14[1|4|5|6|7|8|9])|(15([0|1|2|3|5|6|7|8|9]))|(16[2|5|6|7])|(17[0|1|2|3|5|6|7|8])|(18[0-9])|(19[1|8|9]))\d{8}$/;
if (!myreg.test(phoneStr)) {
return false;
}
return true;
}
// 身份证号校验
isCard(cardStr) {
const myreg = /^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X]|[x])$/;
if (!myreg.test(cardStr)) {
return false;
}
return true;
}
// 邮箱校验
isEmail(emailStr) {
console.log(emailStr);
const myreg = /^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/;
if (!myreg.test(emailStr)) {
return false;
}
return true;
}
// 信息脱敏
/**
*
* @param {身份号} cardStr
* @param {手机号} phoneStr
* @param {姓名} name
* @param {邮箱} emailStr
* @param {用户名} Accountname
*/
idcardDesensitization(cardStr = '', phoneStr = '', name = '', emailStr = '', Accountname = '') {
let star = '*';
const len = cardStr.toString().length - 4;
for (let i = 1; i < len; i++) {
star += '*';
}
return {
userName: name.replace(/.(?=.)/g, '*'),
mobile: `${phoneStr.substring(0, 3)}****${phoneStr.substring(7, 11)}`,
idCard: star + cardStr.substring(14, 18),
Accountname: Accountname.replace(/.(?=.)/g, '*'),
email: `${emailStr.substr(0, 2)}****${emailStr.substr(emailStr.indexOf('@'))}`,
};
}
// 验证密码强度 @param {设置的密码} oValue
passwordStrength(oValue) {
oValue = oValue.replace(/[\u4E00-\u9FA5]/g, '');
if (/\d/.test(oValue) && /[a-z]/.test(oValue) && /[A-Z]/.test(oValue)) {
return {
type: '2',
text: '强',
};
} if (
/^\d+$/.test(oValue)
|| /^[A-Z]+$/.test(oValue)
|| /^[a-z]+$/.test(oValue)
) {
return {
type: '0',
text: '弱',
};
}
return {
type: '1',
text: '中',
};
}
}
const tools = new Tools();
export default tools;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128