※주의 : 의식의 흐름대로 작성되었습니다.



빠르다 간단하다 쉽다.





  -1-

이메일 정규식을 구하자 ------>https://emailregex.com/


1
var emailRegex = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
cs


 이놈을 간단하게 설명하자면... 아... 일단 특수먼자 <>()[]/.,;:(공백)@ 문자로는 시작을 모대요

그 뒤로는 선량한 댓글님이 설명해주실 겁니다.


왜냐면 '.' 이나 '+'이나 '{' 같은 메일의 분류용(?)정책에 대해서는 제가 하나하나 설명할 수 없으니깐 말이죠.




  -2-

이메일 유효성 검사 함수를 뿅


1
2
3
4
function isValidEmail( email ) {
    var emailRegex = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return emailRegex.test( String(email).toLowerCase() );
};
cs



 왜 때문에 toLowerCase()를 넣었죠? 라고 하는데 

사실 의미 없죠. 위에 정규식에서도 호스트 검사 그룹에 a-zA-Z가 들어가 있는데 제가 한번 더 할 필요가 없는거죠.


 그건 사실 저의 습관 같은거에요. email에 대한 저장,수정,검사 같은 기능을 만들 때는 무조건 lowerCase로 만들어서 처리를 하는 거죠.

나에게 무슨일이 있었길래 email을 소문자로만 처리하냐라고 여쭤보신다면, 짬바라고 대답할께요.




- 끗 -






  -3-

이제 내 유틸에 이메일 검사 함수를 넣어두고 마무리


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
/************************************************************************************
 * Eddie's javascript utilities
 *  - 욕망의개발자의 자바스크립트 유틸리티
 *  - IE11 이하에서는 동작여부 보장 못함 ( 자주 사용하는 function은 혹시 모릉께 polyfill 처리하긴 함 )
 *  - DISCLAIMER : 영리 목적으로 사용해도 되지만 뻑이 갔을 때 나는 책임 지지 노노
 * 
 * @author Cho Hyun Kwon
 * @version 1.0.0
 ************************************************************************************/
;var E8Util = (function(){
    'use strict';
 
    var _utils = {};
 
    /* 변수와 상수 (Variables & Constants)
    -------------------------------------------------------------------------
     */
 
 
 
    /* 나중에 밖에서 불러서 쓸 함수들 (Public Functions)
    -------------------------------------------------------------------------
     */
    /**
     * 객체의 empty 여부 체크
     * @param obj - 검사할 객체
     */
    _utils.isEmpty = function( obj ) { 
        return isEmpty( obj );
    };
    /**
     * 문자열의 공백 여부 체크 
     * @param str - 검사할 문자열
     */
    _utils.isBlank = function( str ) {
        return isBlank( str );
    };
 
    //////////////////////////////////////////////////////////////////////////
    // Validate Set
    //////////////////////////////////////////////////////////////////////////
     _utils.isValid = {};
    /**
     * 주민등록번호 유효성 검사
     * @param rrn - 주민등록번호
     */
    _utils.isValid.rrn = function( rrn ) {
        if( isBlank(rrn) ) return false;
        return validRegistrationNumber(rrn,'rrn');
    };
    /**
     * 외국인 등록번호 유효성 검사
     * @param frn - 외국인등록번호
     */
    _utils.isValid.frn = function( frn ) {
        if( isBlank(frn) ) return false;
        return validRegistrationNumber(frn,'frn');
    };
    /**
     * 주민/외국인 등록번호 유효성 검사
     * @param rn - 주민/외국인 등록번호
     */
    _utils.isValid.rn = function( rn ) {
        if( isBlank(rn) ) return false;
        return validRegistrationNumber(rn);
 
    };
    /**
     * 이메일 주소 유효성 검사
     * @param email - 이메일 주소 (@호스트 포함)
     */
    _utils.isValid.email = function( email ) {
        var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
        return re.test( String(email).toLowerCase() );
    };
 
    return init();
 
 
    /* 요 안에서만 쓸 함수들 (Private Functions)
    -------------------------------------------------------------------------
     */    
 
    function init() {
        console.info('E8Util initialized.');
        return _utils;
    }
 
    // empty check
    function isEmpty( obj ) {
        return ( obj == null || obj == undefined );
    }
    // blank check
    function isBlank( str ) {
        return ( !str || str.trim().length === 0 );
    }
    // validate registration number
    function validRegistrationNumber( rn, type ) {
        rn = rn.split("-").join('');
        if( rn.length !== 13 ) return false;
 
        var checkSum = 0;
        for(var i=0; i<12; i++) checkSum += ((rn.substr(i,1)>>0)*((i%8)+2));
 
        var rrnMatch = (11-(checkSum%11))%10 == rn.substr(12,1);
        var frnMatch = (13-(checkSum%11))%10 == rn.substr(12,1);
 
        if( type === 'rrn' ) return rrnMatch;
        else if( type === 'frn' ) return frnMatch; 
        else return rrnMatch || frnMatch;
    };
})();
 
cs





-끝-




+ Recent posts