※주의 : 의식의 흐름대로 작성되었습니다.
빠르다 간단하다 쉽다.
-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 |
-끝-
'javascript' 카테고리의 다른 글
[javascript] [나만의 유틸만들기-3] 주민/외국인 등록번호 검사 (0) | 2018.11.30 |
---|---|
[javascript] [나만의 유틸만들기-2] 공백(empty, blank) 검사 (0) | 2018.11.30 |
[javascript] [나만의 유틸만들기-1] 와꾸짜자 (0) | 2018.11.30 |