blob: b8418a6c2d372414abcf041e517afd1c24d1f98b [file] [log] [blame]
guangchao.xu070005a2020-12-07 09:56:40 +08001/**
2 * 验证电子邮箱格式
3 */
4function email(value) {
5 return /^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(value);
6}
7
8/**
9 * 验证手机格式
10 */
11function mobile(value) {
12 return /^1[23456789]\d{9}$/.test(value)
13}
14
15/**
16 * 验证URL格式
17 */
18function url(value) {
19 return /http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w-.\/?%&=]*)?/.test(value)
20}
21
22/**
23 * 验证日期格式
24 */
25function date(value) {
26 return !/Invalid|NaN/.test(new Date(value).toString())
27}
28
29/**
30 * 验证ISO类型的日期格式
31 */
32function dateISO(value) {
33 return /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(value)
34}
35
36/**
37 * 验证十进制数字
38 */
39function number(value) {
40 return /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(value)
41}
42
43/**
44 * 验证整数
45 */
46function digits(value) {
47 return /^\d+$/.test(value)
48}
49
50/**
51 * 验证身份证号码
52 */
53function idCard(value) {
54 return /^[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)$/.test(
55 value)
56}
57
58/**
59 * 是否车牌号
60 */
61function carNo(value) {
62 // 新能源车牌
63 const xreg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(([0-9]{5}[DF]$)|([DF][A-HJ-NP-Z0-9][0-9]{4}$))/;
64 // 旧车牌
65 const creg = /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳]{1}$/;
66 if (value.length === 7) {
67 return creg.test(value);
68 } else if (value.length === 8) {
69 return xreg.test(value);
70 } else {
71 return false;
72 }
73}
74
75/**
76 * 金额,只允许2位小数
77 */
78function amount(value) {
79 //金额,只允许保留两位小数
80 return /^[1-9]\d*(,\d{3})*(\.\d{1,2})?$|^0\.\d{1,2}$/.test(value);
81}
82
83/**
84 * 中文
85 */
86function chinese(value) {
87 let reg = /^[\u4e00-\u9fa5]+$/gi;
88 return reg.test(value);
89}
90
91/**
92 * 只能输入字母
93 */
94function letter(value) {
95 return /^[a-zA-Z]*$/.test(value);
96}
97
98/**
99 * 只能是字母或者数字
100 */
101function enOrNum(value) {
102 //英文或者数字
103 let reg = /^[0-9a-zA-Z]*$/g;
104 return reg.test(value);
105}
106
107/**
108 * 验证是否包含某个值
109 */
110function contains(value, param) {
111 return value.indexOf(param) >= 0
112}
113
114/**
115 * 验证一个值范围[min, max]
116 */
117function range(value, param) {
118 return value >= param[0] && value <= param[1]
119}
120
121/**
122 * 验证一个长度范围[min, max]
123 */
124function rangeLength(value, param) {
125 return value.length >= param[0] && value.length <= param[1]
126}
127
128/**
129 * 是否固定电话
130 */
131function landline(value) {
132 let reg = /^\d{3,4}-\d{7,8}(-\d{3,4})?$/;
133 return reg.test(value);
134}
135
136/**
137 * 判断是否为空
138 */
139function empty(value) {
140 switch (typeof value) {
141 case 'undefined':
142 return true;
143 case 'string':
144 if (value.replace(/(^[ \t\n\r]*)|([ \t\n\r]*$)/g, '').length == 0) return true;
145 break;
146 case 'boolean':
147 if (!value) return true;
148 break;
149 case 'number':
150 if (0 === value || isNaN(value)) return true;
151 break;
152 case 'object':
153 if (null === value || value.length === 0) return true;
154 for (var i in value) {
155 return false;
156 }
157 return true;
158 }
159 return false;
160}
161
162/**
163 * 是否json字符串
164 */
165function jsonString(value) {
166 if (typeof value == 'string') {
167 try {
168 var obj = JSON.parse(value);
169 if (typeof obj == 'object' && obj) {
170 return true;
171 } else {
172 return false;
173 }
174 } catch (e) {
175 return false;
176 }
177 }
178 return false;
179}
180
181
182/**
183 * 是否数组
184 */
185function array(value) {
186 if (typeof Array.isArray === "function") {
187 return Array.isArray(value);
188 } else {
189 return Object.prototype.toString.call(value) === "[object Array]";
190 }
191}
192
193/**
194 * 是否对象
195 */
196function object(value) {
197 return Object.prototype.toString.call(value) === '[object Object]';
198}
199
200/**
201 * 是否短信验证码
202 */
203function code(value, len = 6) {
204 return new RegExp(`^\\d{${len}}$`).test(value);
205}
206
207
208export default {
209 email,
210 mobile,
211 url,
212 date,
213 dateISO,
214 number,
215 digits,
216 idCard,
217 carNo,
218 amount,
219 chinese,
220 letter,
221 enOrNum,
222 contains,
223 range,
224 rangeLength,
225 empty,
226 isEmpty: empty,
227 jsonString,
228 landline,
229 object,
230 array,
231 code
232}