随笔 - 195  文章 - 3  评论 - 36  阅读 - 63万

JavaScript验证和数据处理的干货(经典)

 

在开发web项目的时候,难免遇到各种对网页数据的处理,比如对用户在表单中输入的电话号码、邮箱、金额、身份证号、密码长度和复杂程度等等的验证,以及对后台返回数据的格式化比如金额,返回的值为null,还有对指定日期之前或之后某一天或某一月的计算。

遇到需要对数据及表单验证的,我相信大家都像我一样,喜欢在网上找相关的方法,因为自己写的话,是比较耗时的。今天就给大家分享一下,自己在工作中总结的一些常用
的js。

 

 

复制代码
  1 /** 
  2 * 验证密码复杂度(必须包含数字字母) 
  3 * @param str 
  4 * @returns true:满足规则,false:不满足 
  5 */ 
  6 function validateStr(str){ 
  7 var reg1 = /^(([0-9]{1,})([a-z]{1,}))|(([a-z]{1,})([0-9]{1,}))$/; 
  8 var reg2 = /^(([0-9]{1,})([A-Z]{1,}))|(([A-Z]{1,})([0-9]{1,}))$/; 
  9 //var reg3 = /^([a-zA-Z]{0,})[0-9a-z-A-z]{0,}[~`!@#$%^&*.]{0,}$/; 
 10 str = valueTrim(str); 
 11 //if(reg3.test(str)){ 
 12 // return true; 
 13 //} 
 14 if(reg1.test(str)){ 
 15 return true; 
 16 } 
 17 if(reg2.test(str)){ 
 18 return true; 
 19 } 
 20 return false; 
 21 } 
 22 /** 
 23 * 判断字符串长度 必须大于8位小于20位,一般用于密码 
 24 * @param str 字符串 
 25 * @returns 满足返回true 
 26 */ 
 27 function valiDateLength(str){ 
 28 if(str==null || str==''){ 
 29 return false; 
 30 } 
 31 str = valueTrim(str); 
 32 if(parseFloat(str.length)<8 ){ 
 33 return false; 
 34 } 
 35 if(parseFloat(str.length)>20){ 
 36 return false; 
 37 } 
 38 return true; 
 39 } 
 40 /** 
 41 * 验证时间 
 42 * @param dataValue 格式为:YYYY-MM-DD 
 43 * @returns 匹配返回true 不匹配返回false 
 44 */ 
 45 function valiDate(dateValue){ 
 46 var result = dateValue.match(/((^((1[8-9]\d{2})|([2-9]\d{3}))(-)(10|12|0?[13578])(-)(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(-)(11|0?[469])(-)(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(-)(0?2)(-)(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)(-)(0?2)(-)(29)$)|(^([3579][26]00)(-)(0?2)(-)(29)$)|(^([1][89][0][48])(-)(0?2)(-)(29)$)|(^([2-9][0-9][0][48])(-)(0?2)(-)(29)$)|(^([1][89][2468][048])(-)(0?2)(-)(29)$)|(^([2-9][0-9][2468][048])(-)(0?2)(-)(29)$)|(^([1][89][13579][26])(-)(0?2)(-)(29)$)|(^([2-9][0-9][13579][26])(-)(0?2)(-)(29)$))/); 
 47 if(result==null){ 
 48 return false; 
 49 } 
 50 return true; 
 51 } 
 52 /** 
 53 * 验证电话号码 
 54 * @param phoneValue 要验证的电话号码 
 55 * @returns 匹配返回true 不匹配返回false 
 56 */ 
 57 function validatePhone(phoneValue) { 
 58 phoneValue = valueTrim(phoneValue); 
 59 var reg = /^[1][0-9]{10}$/; 
 60 return reg.test(phoneValue); 
 61 } 
 62 /** 
 63 * 验证邮箱 
 64 * @param emailValue 要验证的邮箱 
 65 * @returns 匹配返回true 不匹配返回false 
 66 */ 
 67 function validateEmail(emailValue){ 
 68 var reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/; 
 69 return reg.test(emailValue); 
 70 } 
 71 /** 
 72 * 判断是否是数字 
 73 * @param numberValue 要验证的数据 
 74 * @returns 匹配返回true 不匹配返回false 
 75 */ 
 76 function isNumber(numberValue){ 
 77 //定义正则表达式部分 
 78 var reg1 = /^[0-9]{0,}$/; 
 79 var reg2 = /^[1-9]{1}[0-9]{0,}$/; 
 80 //alert(numberValue); 
 81 if(numberValue ==null || numberValue.length==0){ 
 82 return false; 
 83 } 
 84 numberValue = valueTrim(numberValue); 
 85 //判断当数字只有1位时 
 86 if(numberValue.length<2){ 
 87 return reg1.test(numberValue); 
 88 } 
 89 return reg2.test(numberValue);; 
 90 } 
 91 /*** 
 92 * 金额 
 93 * @param value 
 94 * @returns 
 95 */ 
 96 function isMoney(value) { 
 97 if(value==''){ 
 98 return false; 
 99 } 
100 value = valueTrim(value); 
101 value = value.replace(/(^\s*)|(\s*$)/g, ""); 
102 var reg = /^[0-9]*\.?[0-9]{0,2}$/; 
103 if(isNumber(value)){ 
104 return true; 
105 } 
106 if(value.length>3){ 
107 if(value.substr(0, 1)=="0"){ 
108 if(value.substr(3,value.length).length>2){ 
109 return false; 
110 } 
111 } 
112 } 
113 return reg.test(value); 
114 } 
115 /*** 
116 * 判断是否是0到100之间的数 
117 * @param value 
118 * @returns 
119 */ 
120 function isZeroToOne(value) { 
121 if(value==''){ 
122 return false; 
123 } 
124 value = valueTrim(value); 
125 if(isMyFloat(value)){ 
126 if(parseFloat(value)<100 && parseFloat(value)>0){ 
127 return true; 
128 } 
129 } 
130 return false; 
131 } 
132 /** 
133 * 验证是否是浮点数 
134 * @param floatValue 要验证的数据 
135 * @returns 匹配返回true 不匹配返回false 
136 */ 
137 function isMyFloat(floatValue){ 
138 if(floatValue==''){ 
139 return false; 
140 } 
141 floatValue = valueTrim(floatValue); 
142 var reg = /^(\d+)(\.\d+)$/; 
143 if(isNumber(floatValue)){ 
144 return true; 
145 } 
146 if(floatValue.length>3){ 
147 if(floatValue.substr(0, 1)=="0"){ 
148 if(floatValue.substr(0, 2)!="0."){ 
149 return false; 
150 } 
151 } 
152 } 
153 return reg.test(floatValue); 
154 } 
155 /** 
156 * 判断是否是汉字 
157 * @param charValue 要验证的数据 
158 * @returns 匹配返回true 不匹配返回false 
159 */ 
160 function isCharacter(charValue){ 
161 var reg = /^[\u4e00-\u9fa5]{0,}$/; 
162 return reg.test(charValue); 
163 } 
164 /** 
165 * 验证座机号 
166 * @param telValue 要验证的座机号 
167 * @returns 匹配返回true 不匹配返回false 
168 */ 
169 function valiDateTel(telValue){ 
170 var reg = /^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$/; 
171 telValue = valueTrim(telValue); 
172 if(!reg.test(telValue)){ 
173 return false; 
174 } 
175 return true; 
176 } 
177 var Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ]; // 加权因子 
178 var ValideCode = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]; // 身份证验证位值.10代表X 
179 /** 
180 * 验证身份证 
181 * @param idCard 需要验证的身份证号 
182 * @returns 匹配返回true 不匹配返回false 
183 */ 
184 function IdCardValidate(idCardValue) { 
185 //去掉字符串头尾空格 
186 idCardValue = valueTrim(idCardValue.replace(/ /g, "")); 
187 if (idCardValue.length == 15) { 
188 //进行15位身份证的验证 
189 return isValidityBrithBy15IdCard(idCardValue); 
190 } else if (idCardValue.length == 18) { 
191 // 得到身份证数组 
192 var a_idCard = idCardValue.split(""); 
193 //进行18位身份证的基本验证和第18位的验证 
194 if(isValidityBrithBy18IdCard(idCardValue)&&isTrueValidateCodeBy18IdCard(a_idCard)){ 
195 return true; 
196 }else { 
197 return false; 
198 } 
199 } else { 
200 return false; 
201 } 
202 } 
203 /** 
204 * 判断身份证号码为18位时最后的验证位是否正确 
205 * @param a_idCard 身份证号码数组 
206 * @return 
207 */ 
208 function isTrueValidateCodeBy18IdCard(a_idCard) { 
209 var sum = 0; // 声明加权求和变量 
210 if (a_idCard[17].toLowerCase() == 'x') { 
211 a_idCard[17] = 10;// 将最后位为x的验证码替换为10方便后续操作 
212 } 
213 for ( var i = 0; i < 17; i++) { 
214 sum += Wi[i] * a_idCard[i];// 加权求和 
215 } 
216 valCodePosition = sum % 11; // 得到验证码所位置 
217 if (a_idCard[17] == ValideCode[valCodePosition]) { 
218 return true; 
219 } else { 
220 return false; 
221 } 
222 } 
223 /** 
224 * 验证18位数身份证号码中的生日是否是有效生日 
225 * @param idCard 18位书身份证字符串 
226 * @return 
227 */ 
228 function isValidityBrithBy18IdCard(idCard18){ 
229 var year = idCard18.substring(6,10); 
230 var month = idCard18.substring(10,12); 
231 var day = idCard18.substring(12,14); 
232 var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day)); 
233 // 这里用getFullYear()获取年份,避免千年虫问题 
234 if(temp_date.getFullYear()!=parseFloat(year) 
235 ||temp_date.getMonth()!=parseFloat(month)-1 
236 ||temp_date.getDate()!=parseFloat(day)){ 
237 return false; 
238 }else{ 
239 return true; 
240 } 
241 } 
242 /** 
243 * 验证15位数身份证号码中的生日是否是有效生日 
244 * @param idCard15 15位书身份证字符串 
245 * @return 
246 */ 
247 function isValidityBrithBy15IdCard(idCard15){ 
248 var year = idCard15.substring(6,8); 
249 var month = idCard15.substring(8,10); 
250 var day = idCard15.substring(10,12); 
251 var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day)); 
252 // 对于老身份证中的你年龄则不需考虑千年虫问题而使用getYear()方法 
253 if(temp_date.getYear()!=parseFloat(year) 
254 ||temp_date.getMonth()!=parseFloat(month)-1 
255 ||temp_date.getDate()!=parseFloat(day)){ 
256 return false; 
257 }else{ 
258 return true; 
259 } 
260 } 
261 //去掉字符串头尾空格 
262 function valueTrim(str) { 
263 return str.replace(/(^\s*)|(\s*$)/g, ""); 
264 } 
265 /** 
266 * 检验18位身份证号码(15位号码可以只检测生日是否正确即可,自行解决) 
267 * @param idCardValue 18位身份证号 
268 * @returns 匹配返回true 不匹配返回false 
269 */ 
270 function idCardVildate(cid){ 
271 var arrExp = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];//加权因子 
272 var arrValid = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2];//校验码 
273 var reg = /^[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)$/; 
274 if(reg.test(cid)){ 
275 var sum = 0, idx; 
276 for(var i = 0; i < cid.length - 1; i++){ 
277 // 对前17位数字与权值乘积求和 
278 sum += parseInt(cid.substr(i, 1), 10) * arrExp[i]; 
279 } 
280 // 计算模(固定算法) 
281 idx = sum % 11; 
282 // 检验第18为是否与校验码相等 
283 return arrValid[idx] == cid.substr(17, 1).toUpperCase(); 
284 }else{ 
285 return false; 
286 } 
287 } 
288 /** 
289 * 获取指定日期之前或之后的第几天 
290 * 
291 * @param dayCount 
292 * 正数为以后时间,负数为以前时间 如:1表示为明天,-1为昨天 
293 * 
294 */ 
295 function getDateStr(dates, dayCount) { 
296 var dateTime = dayCount * 24 * 60 * 60 * 1000; 
297 var dd = new Date(); 
298 if (dates == "") { 
299 dd = new Date(); 
300 } else { 
301 dd = new Date(dates); 
302 } 
303 var dateNumber = dd.getTime() + dateTime; 
304 var newDate = new Date(dateNumber); 
305 var y = newDate.getFullYear(); 
306 var m = newDate.getMonth() + 1;// 获取当前月份的日期 
307 var d = newDate.getDate(); 
308 if (m < 10) { 
309 m = "0" + m; 
310 } 
311 if (d < 10) { 
312 d = "0" + d; 
313 } 
314 return y + "-" + m + "-" + d; 
315 } 
316 /** 
317 * 获取指定月份的之前或之后的第几个月 
318 * 
319 * @param dayCount 
320 * 正数为以后月份,负数为以前月份 如:1表示为下月,-1为上月 
321 * 
322 */ 
323 function getMonthStr(dates, monthCount) { 
324 var dd = new Date(); 
325 if (dates == "") { 
326 dd = new Date(); 
327 } else { 
328 dd = new Date(dates); 
329 } 
330 var y = dd.getFullYear(); 
331 var m = dd.getMonth() + 1;// 获取当前月份的日期 
332 m = m + monthCount; 
333 if (m == 0) { 
334 m = "12"; 
335 y = y - 1; 
336 } else if (m < 10) { 
337 m = "0" + m; 
338 } else if (m > 12) { 
339 m = m - 12; 
340 m = "0" + m; 
341 y = y + 1; 
342 } 
343 return y + "-" + m; 
344 } 
345 /** 
346 * 
347 *对val值为undefined返回“”,否则返回原值 
348 */ 
349 function dealNull(val) { 
350 if (typeof (val) == "undefined") { 
351 return ""; 
352 } else { 
353 return val; 
354 } 
355 }
复制代码

 

 

 

 

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
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
/**
* 验证密码复杂度(必须包含数字字母)
* @param str
* @returns true:满足规则,false:不满足
*/
function validateStr(str){
var reg1 = /^(([0-9]{1,})([a-z]{1,}))|(([a-z]{1,})([0-9]{1,}))$/;
var reg2 = /^(([0-9]{1,})([A-Z]{1,}))|(([A-Z]{1,})([0-9]{1,}))$/;
//var reg3 = /^([a-zA-Z]{0,})[0-9a-z-A-z]{0,}[~`!@#$%^&*.]{0,}$/;
str = valueTrim(str);
//if(reg3.test(str)){
// return true;
//}
if(reg1.test(str)){
return true;
}
if(reg2.test(str)){
return true;
}
return false;
}
/**
* 判断字符串长度 必须大于8位小于20位,一般用于密码
* @param str 字符串
* @returns 满足返回true
*/
function valiDateLength(str){
if(str==null || str==''){
return false;
}
str = valueTrim(str);
if(parseFloat(str.length)<8 ){
return false;
}
if(parseFloat(str.length)>20){
return false;
}
return true;
}
/**
* 验证时间
* @param dataValue 格式为:YYYY-MM-DD
* @returns 匹配返回true 不匹配返回false
*/
function valiDate(dateValue){
var result = dateValue.match(/((^((1[8-9]\d{2})|([2-9]\d{3}))(-)(10|12|0?[13578])(-)(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(-)(11|0?[469])(-)(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(-)(0?2)(-)(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)(-)(0?2)(-)(29)$)|(^([3579][26]00)(-)(0?2)(-)(29)$)|(^([1][89][0][48])(-)(0?2)(-)(29)$)|(^([2-9][0-9][0][48])(-)(0?2)(-)(29)$)|(^([1][89][2468][048])(-)(0?2)(-)(29)$)|(^([2-9][0-9][2468][048])(-)(0?2)(-)(29)$)|(^([1][89][13579][26])(-)(0?2)(-)(29)$)|(^([2-9][0-9][13579][26])(-)(0?2)(-)(29)$))/);
if(result==null){
return false;
}
return true;
}
/**
* 验证电话号码
* @param phoneValue 要验证的电话号码
* @returns 匹配返回true 不匹配返回false
*/
function validatePhone(phoneValue) {
phoneValue = valueTrim(phoneValue);
var reg = /^[1][0-9]{10}$/;
return reg.test(phoneValue);
}
/**
* 验证邮箱
* @param emailValue 要验证的邮箱
* @returns 匹配返回true 不匹配返回false
*/
function validateEmail(emailValue){
var reg = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
return reg.test(emailValue);
}
/**
* 判断是否是数字
* @param numberValue 要验证的数据
* @returns 匹配返回true 不匹配返回false
*/
function isNumber(numberValue){
//定义正则表达式部分
var reg1 = /^[0-9]{0,}$/;
var reg2 = /^[1-9]{1}[0-9]{0,}$/;
//alert(numberValue);
if(numberValue ==null || numberValue.length==0){
return false;
}
numberValue = valueTrim(numberValue);
//判断当数字只有1位时
if(numberValue.length<2){
return reg1.test(numberValue);
}
return reg2.test(numberValue);;
}
/***
* 金额
* @param value
* @returns
*/
function isMoney(value) {
if(value==''){
return false;
}
value = valueTrim(value);
value = value.replace(/(^\s*)|(\s*$)/g, "");
var reg = /^[0-9]*\.?[0-9]{0,2}$/;
if(isNumber(value)){
return true;
}
if(value.length>3){
if(value.substr(0, 1)=="0"){
if(value.substr(3,value.length).length>2){
return false;
}
}
}
return reg.test(value);
}
/***
* 判断是否是0到100之间的数
* @param value
* @returns
*/
function isZeroToOne(value) {
if(value==''){
return false;
}
value = valueTrim(value);
if(isMyFloat(value)){
if(parseFloat(value)<100 && parseFloat(value)>0){
return true;
}
}
return false;
}
/**
* 验证是否是浮点数
* @param floatValue 要验证的数据
* @returns 匹配返回true 不匹配返回false
*/
function isMyFloat(floatValue){
if(floatValue==''){
return false;
}
floatValue = valueTrim(floatValue);
var reg = /^(\d+)(\.\d+)$/;
if(isNumber(floatValue)){
return true;
}
if(floatValue.length>3){
if(floatValue.substr(0, 1)=="0"){
if(floatValue.substr(0, 2)!="0."){
return false;
}
}
}
return reg.test(floatValue);
}
/**
* 判断是否是汉字
* @param charValue 要验证的数据
* @returns 匹配返回true 不匹配返回false
*/
function isCharacter(charValue){
var reg = /^[\u4e00-\u9fa5]{0,}$/;
return reg.test(charValue);
}
/**
* 验证座机号
* @param telValue 要验证的座机号
* @returns 匹配返回true 不匹配返回false
*/
function valiDateTel(telValue){
var reg = /^(\(\d{3,4}\)|\d{3,4}-)?\d{7,8}$/;
telValue = valueTrim(telValue);
if(!reg.test(telValue)){
return false;
}
return true;
}
var Wi = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 ]; // 加权因子
var ValideCode = [ 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ]; // 身份证验证位值.10代表X
/**
* 验证身份证
* @param idCard 需要验证的身份证号
* @returns 匹配返回true 不匹配返回false
*/
function IdCardValidate(idCardValue) {
//去掉字符串头尾空格
idCardValue = valueTrim(idCardValue.replace(/ /g, ""));
if (idCardValue.length == 15) {
//进行15位身份证的验证
return isValidityBrithBy15IdCard(idCardValue);
} else if (idCardValue.length == 18) {
// 得到身份证数组
var a_idCard = idCardValue.split("");
//进行18位身份证的基本验证和第18位的验证
if(isValidityBrithBy18IdCard(idCardValue)&&isTrueValidateCodeBy18IdCard(a_idCard)){
return true;
}else {
return false;
}
} else {
return false;
}
}
/**
* 判断身份证号码为18位时最后的验证位是否正确
* @param a_idCard 身份证号码数组
* @return
*/
function isTrueValidateCodeBy18IdCard(a_idCard) {
var sum = 0; // 声明加权求和变量
if (a_idCard[17].toLowerCase() == 'x') {
a_idCard[17] = 10;// 将最后位为x的验证码替换为10方便后续操作
}
for ( var i = 0; i < 17; i++) {
sum += Wi[i] * a_idCard[i];// 加权求和
}
valCodePosition = sum % 11; // 得到验证码所位置
if (a_idCard[17] == ValideCode[valCodePosition]) {
return true;
} else {
return false;
}
}
/**
* 验证18位数身份证号码中的生日是否是有效生日
* @param idCard 18位书身份证字符串
* @return
*/
function isValidityBrithBy18IdCard(idCard18){
var year = idCard18.substring(6,10);
var month = idCard18.substring(10,12);
var day = idCard18.substring(12,14);
var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day));
// 这里用getFullYear()获取年份,避免千年虫问题
if(temp_date.getFullYear()!=parseFloat(year)
||temp_date.getMonth()!=parseFloat(month)-1
||temp_date.getDate()!=parseFloat(day)){
return false;
}else{
return true;
}
}
/**
* 验证15位数身份证号码中的生日是否是有效生日
* @param idCard15 15位书身份证字符串
* @return
*/
function isValidityBrithBy15IdCard(idCard15){
var year = idCard15.substring(6,8);
var month = idCard15.substring(8,10);
var day = idCard15.substring(10,12);
var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day));
// 对于老身份证中的你年龄则不需考虑千年虫问题而使用getYear()方法
if(temp_date.getYear()!=parseFloat(year)
||temp_date.getMonth()!=parseFloat(month)-1
||temp_date.getDate()!=parseFloat(day)){
return false;
}else{
return true;
}
}
//去掉字符串头尾空格
function valueTrim(str) {
return str.replace(/(^\s*)|(\s*$)/g, "");
}
/**
* 检验18位身份证号码(15位号码可以只检测生日是否正确即可,自行解决)
* @param idCardValue 18位身份证号
* @returns 匹配返回true 不匹配返回false
*/
function idCardVildate(cid){
var arrExp = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];//加权因子
var arrValid = [1, 0, "X", 9, 8, 7, 6, 5, 4, 3, 2];//校验码
var reg = /^[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)$/;
if(reg.test(cid)){
var sum = 0, idx;
for(var i = 0; i < cid.length - 1; i++){
// 对前17位数字与权值乘积求和
sum += parseInt(cid.substr(i, 1), 10) * arrExp[i];
}
// 计算模(固定算法)
idx = sum % 11;
// 检验第18为是否与校验码相等
return arrValid[idx] == cid.substr(17, 1).toUpperCase();
}else{
return false;
}
}
/**
* 获取指定日期之前或之后的第几天
*
* @param dayCount
* 正数为以后时间,负数为以前时间 如:1表示为明天,-1为昨天
*
*/
function getDateStr(dates, dayCount) {
var dateTime = dayCount * 24 * 60 * 60 * 1000;
var dd = new Date();
if (dates == "") {
dd = new Date();
} else {
dd = new Date(dates);
}
var dateNumber = dd.getTime() + dateTime;
var newDate = new Date(dateNumber);
var y = newDate.getFullYear();
var m = newDate.getMonth() + 1;// 获取当前月份的日期
var d = newDate.getDate();
if (m < 10) {
m = "0" + m;
}
if (d < 10) {
d = "0" + d;
}
return y + "-" + m + "-" + d;
}
/**
* 获取指定月份的之前或之后的第几个月
*
* @param dayCount
* 正数为以后月份,负数为以前月份 如:1表示为下月,-1为上月
*
*/
function getMonthStr(dates, monthCount) {
var dd = new Date();
if (dates == "") {
dd = new Date();
} else {
dd = new Date(dates);
}
var y = dd.getFullYear();
var m = dd.getMonth() + 1;// 获取当前月份的日期
m = m + monthCount;
if (m == 0) {
m = "12";
y = y - 1;
} else if (m < 10) {
m = "0" + m;
} else if (m > 12) {
m = m - 12;
m = "0" + m;
y = y + 1;
}
return y + "-" + m;
}
/**
*
*对val值为undefined返回“”,否则返回原值
*/
function dealNull(val) {
if (typeof (val) == "undefined") {
return "";
} else {
return val;
}
}
posted on   一只阿木木  阅读(314)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

点击右上角即可分享
微信分享提示