by Nathan

[유효성]자바스크립트 함수 본문

Programming/JavaScript, Json

[유효성]자바스크립트 함수

넷쓴 2016. 9. 5. 16:46
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
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
<script>
 
    /* 
     * 숫자로만 이루어진 문자열인지 검사
     * cf) 음수부호는 포함하지 않음
    */
    function is_number(x) {
        var reg = /^\d+$/;
        return reg.test(x);
    }
     
    /* 
     * 부동소수점 숫자인지 음수부호도 포함하여 검사
    */
    function is_double(x) {
        var reg = /^[-|+]?\d+\.?\d*$/;
        return reg.test(x);
    }
    
    /* 
     * 부동소수점 숫자인지 검사
     * cf) 음수부호는 포함하지 않음
     */
    function is_double_plus(x) {
        var reg = /^\d+\.?\d*$/;
        return reg.test(x);
    }
 
 
    /* 
     * 정수인지 음수부호도 포함하여 검사
    */
    function is_integer(x) {
        var reg = /^[-|+]?\d+$/;
        return reg.test(x);
    }
 
    /* 
     * 숫자(0~9)와 문자(A(a)~Z(z))로만 이루어진 문자열인지 검사
     * cf) space가 true면 공백문자를 포함한다.
    */
    function is_alpha_numeric(x, space) {
        if (space) {
            var reg = /^[a-z A-Z0-9]+$/;
            return reg.test(x);
        } else {
            var reg = /^[a-zA-Z0-9]+$/;
            return reg.test(x);
        }
    }
    
    /* 
     * 문자(A(a)~Z(z))로만 이루어진 문자열인지 검사
     * cf) space가 true면 공백문자를 포함한다.
     */
    function is_alphabetic(x, space) {
        if (space) {
            var reg = /^[a-z A-Z]+$/;
            return reg.test(x);
        } else {
            var reg = /^[a-zA-Z]+$/;
            return reg.test(x);
        }
    }
    
    /* 
     *  email 형식의 문자열인지 검사
     */
    function email_str(str) {
        var regEmil = /[a-z0-9]{2,}@[a-z0-9-]{2,}\.[a-z0-9]{2,}/i
        return regEmil.test(str);
    }
 
    /* 
     * 문자열의 Byte 수를 반환한다.
    */
    function get_byte(str) { 
        var len = 0;
        for (var idx=0; idx<str.length; idx++) { 
            if ( (str.charCodeAt(idx)<0|| (str.charCodeAt(idx)>127) ) 
                len += 2;
            else
                len ++;
        }
        return len;
    }
        
    /* 
     * 문자열을 find문자열을 찾아서 rps로 대체
    */
    function replace_str(str, find, rps) {
        var reg = new RegExp(find, "ig");
        return str.replace(reg, rps);
    }
        
    /* 
     * 숫자를 1000단위 콤마로 구분된 문자열로 반환
    */
    function money_format(num) {
        var comma = new RegExp("([0-9])([0-9][0-9][0-9][,.])");
        var data = String(num).split(".");
 
        data[0+= ".";
        do {
            data[0= data[0].replace(comma, "$1,$2");
        } while (comma.test(data[0]));
 
        if (data.length > 1)
            return data.join("");
        else
            return data[0].split(".")[0];
    }
     
    /* 
     * 1000단위 콤마로 구분된 문자열를 숫자로 반환
    */
    function money_to_num(str) {
        var num = replace_str(String(str), ",""");
        return Number(num);
    }
 
    /* 
     * 숫자 num을 n자릿수까지 반올림
    */
    function round_x(num, n) {
        // 1234.675, 2 -> 1234.68
        var i = Math.pow(10, n);
        return Math.round(num * i) / i;
    }
 
    /* 
     * 숫자 num을 n자릿수까지 올림
    */
    function ceil_x(num, n) {
        // 1234.674, 2 -> 1234.68
        var i = Math.pow(10, n);
        return Math.ceil(num * i) / i;
    }
 
    /* 
     * 숫자 num을 n자릿수까지 내림
    */
    function floor_x(num, n) {
        // 1234.675, 2 -> 1234.67
        var i = Math.pow(10, n);
        return Math.floor(num * i) / i;
    }
    
    /* 
     * 왼쪽에 위치한 whitespace 문자를 제거
    */
    function ltrim(str) {
        return str.replace(/^\s+/"");
    }
 
    /*  
     *  오른쪽에 위치한 whitespace 문자를 제거
    */
    function rtrim(str) {
        return str.replace(/\s+$/"");
    }
    
    /* 
     *  양쪽의 whitespace 문자를 제거
    */
    function trim(str) {
        return rtrim(ltrim(str));
    }
        
    /*  
     * 주어진 문자열의 왼쪽을 padding 문자로 채운다
    */
    function lpad(str, n, padding) {
        if (str.length >= n)
            return str;
        else {
            var len = n - str.length;
            var pad_str = str;
            for (var i=0; i<len; i++)
                pad_str = padding + pad_str;
            
            return pad_str;
        }
    }
 
    /* 
     * 주어진 문자열의 오른쪽을 padding 문자로 채운다
    */
    function rpad(str, n, padding) {
        if (str.length >= n)
            return str;
        else {
            var len = n - str.length;
            var pad_str = str;
            for (var i=0; i<len; i++)
                pad_str = pad_str + padding;
 
            return pad_str;
        }
    }
 
    /*
    * 입력값이 NULL인지 체크
    */
    function isNull(input) {
        if (input.value == null || input.value == "") {
            return true;
        }
        return false;
    }
 
    /*
     * 입력값에 스페이스 이외의 의미있는 값이 있는지 체크
     * ex) if (isEmpty(form.keyword)) {
     *         alert("검색조건을 입력하세요.");
      *     }
    */
    function isEmpty(input) {
        if (input.value == null || input.value.replace(/ /gi,""== "") {
            return true;
        }
        return false;
    }
 
    /*
     * 입력값에 특정 문자(chars)가 있는지 체크
     * 특정 문자를 허용하지 않으려 할 때 사용
     * ex) if (containsChars(form.name,"!,*&^%$#@~;")) {
     *         alert("이름 필드에는 특수 문자를 사용할 수 없습니다.");
     *     }
    */
    function containsChars(input,chars) {
        for (var inx = 0; inx < input.value.length; inx++) {
           if (chars.indexOf(input.value.charAt(inx)) != -1)
               return true;
        }
        return false;
    }
 
    /*
     * 입력값이 특정 문자(chars)만으로 되어있는지 체크
     * 특정 문자만 허용하려 할 때 사용
     * ex) if (!containsCharsOnly(form.blood,"ABO")) {
     *         alert("혈액형 필드에는 A,B,O 문자만 사용할 수 있습니다.");
     *     }
    */
    function containsCharsOnly(input,chars) {
        for (var inx = 0; inx < input.value.length; inx++) {
           if (chars.indexOf(input.value.charAt(inx)) == -1)
               return false;
        }
        return true;
    }
 
    /*
     * 입력값이 알파벳인지 체크
     * 아래 isAlphabet() 부터 isNumComma()까지의 메소드가
     * 자주 쓰이는 경우에는 var chars 변수를 
     * global 변수로 선언하고 사용하도록 한다.
     * ex) var uppercase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
     *     var lowercase = "abcdefghijklmnopqrstuvwxyz"; 
     *     var number    = "0123456789";
     *     function isAlphaNum(input) {
     *         var chars = uppercase + lowercase + number;
     *         return containsCharsOnly(input,chars);
     *     }
    */
    function isAlphabet(input) {
        var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
        return containsCharsOnly(input,chars);
    }
 
    /*
     * 입력값이 알파벳 대문자인지 체크
    */
    function isUpperCase(input) {
        var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        return containsCharsOnly(input,chars);
    }
 
    /*
     * 입력값이 알파벳 소문자인지 체크
    */
    function isLowerCase(input) {
        var chars = "abcdefghijklmnopqrstuvwxyz";
        return containsCharsOnly(input,chars);
    }
 
    /*
     * 입력값에 숫자만 있는지 체크
    */
    function isNumber(input) {
        var chars = "0123456789";
        return containsCharsOnly(input,chars);
    }
 
    /*
     * 입력값이 알파벳,숫자로 되어있는지 체크
    */
    function isAlphaNum(input) {
        var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
        return containsCharsOnly(input,chars);
    }
 
    /*
     * 입력값이 숫자,대시(-)로 되어있는지 체크
    */
    function isNumDash(input) {
        var chars = "-0123456789";
        return containsCharsOnly(input,chars);
    }
 
    /*
     * 입력값이 숫자,콤마(,)로 되어있는지 체크
    */
    function isNumComma(input) {
        var chars = ",0123456789";
        return containsCharsOnly(input,chars);
    }
 
    /*
     * 입력값이 사용자가 정의한 포맷 형식인지 체크
     * 자세한 format 형식은 자바스크립트의 `regular expression`을 참조
    */
    function isValidFormat(input,format) {
        if (input.value.search(format) != -1) {
            return true//올바른 포맷 형식
        }
        return false;
    }
 
    /*
    * 입력값이 이메일 형식인지 체크
    * ex) if (!isValidEmail(form.email)) {
    *         alert("올바른 이메일 주소가 아닙니다.");
    *     }
    */
    function isValidEmail(input) {
//             var format = /^(\S+)@(\S+)\.([A-Za-z]+)$/;
        var format = /^((\w[\-\.])+)@((\w[\-\.])+)\.([A-Za-z]+)$/;
        return isValidFormat(input,format);
    }
 
    /*
     * 입력값이 전화번호 형식(숫자-숫자-숫자)인지 체크
    */
    function isValidPhone(input) {
        var format = /^(\d+)-(\d+)-(\d+)$/;
        return isValidFormat(input,format);
    }
 
    /*
     * 입력값의 바이트 길이를 리턴
     * ex) if (getByteLength(form.title) > 100) {
     *         alert("제목은 한글 50자(영문 100자) 이상 입력할 수 없습니다.");
     *     }
    */
    function getByteLength(input) {
        var byteLength = 0;
        for (var inx = 0; inx < input.value.length; inx++) {
            var oneChar = escape(input.value.charAt(inx));
            if ( oneChar.length == 1 ) {
                byteLength ++;
            } else if (oneChar.indexOf("%u"!= -1) {
                byteLength += 2;
            } else if (oneChar.indexOf("%"!= -1) {
                byteLength += oneChar.length/3;
            }
        }
        return byteLength;
    }
 
    /*
     * 입력값에서 콤마를 없앤다.
    */
    function removeComma(input) {
        return input.value.replace(/,/gi,"");
    }
 
    /*
     * 선택된 라디오버튼이 있는지 체크
    */
    function hasCheckedRadio(input) {
        if (input.length > 1) {
            for (var inx = 0; inx < input.length; inx++) {
                if (input[inx].checked) return true;
            }
        } else {
            if (input.checked) return true;
        }
        return false;
    }
 
    /*
     * 선택된 체크박스가 있는지 체크
    */
    function hasCheckedBox(input) {
        return hasCheckedRadio(input);
    }
 
</script>
cs


'Programming > JavaScript, Json' 카테고리의 다른 글

반복문 4가지  (0) 2017.03.17
테이블 동적 생성  (0) 2016.10.25
[유효성]필수값 체크  (0) 2016.09.06
현재 URL 확인하기  (0) 2016.01.12
jSon ajax  (0) 2015.05.10
Comments