JavaScript 과제 - e-mail판별하기

하이루·2021년 10월 6일
0

사용자가 입력한 이메일이 제대로 된 이메일인지 확인하는 함수를 만드세요.

  1. indexOf를 찾아서 이용해보기
  2. "자바스크립트 이메일 정규표현식"을 검색후 정규표현식을 이용하여 구현해보기

이메일의 조건
1. 아이디 + 도메인(예)(@gmail.com)의 형태
2. 아이디부분에 영어와 숫자만 존재 가능
3. 빈공간x

1번 indexOf 찾아서 이용
function checkmail(email){

let domain_list = ["gmail.com","naver.com"]
let lowercase = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
let uppercase = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
let id = ''
let domain = ''
let isNotEmail = 0

if(email.indexOf(' ') == -1){
	if(email.indexOf('@') != -1){
		let emailSplit = email.lastIndexOf('@')
		id = email.substr(0,emailSplit)
		domain = email.substr(emailSplit + 1, email.length)
        
		if(domain_list.find((e) => e == domain) != undefined){
                
        			id.split("").map((value,i) =>{
                		if(!isNaN(value)){
                    		}else if(lowercase.find((e) => e == value) != undefined ){
                        	}else if(uppercase.find((e) => e == value) != undefined ){
                        	}else{
                            
                        		if(isNotEmail == 0){
                                		console.log("아이디에 특수 문자가 포함되어 있습니다.")
                                	}
                        		isNotEmail = 1
                        	}
                    		})
                        
		}else{
             		isNotEmail = 1
    			console.log("도메인이 잘못되었습니다.(혹은 등록되지 않았습니다.)")
        	}
	}else{
        	isNotEmail = 1
		console.log("@가 없습니다")
	}
}else{
	isNotEmail = 1
	console.log("이메일에 빈칸이 존재합니다.")
}

if(isNotEmail == 0){
	console.log("이메일이 맞습니다.")
}else{
	console.log("이메일이 아닙니다.")
}

}

2번 이메일 정규표현식 이용

function checkmail(email) {

	var regExp = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;

	return regExp.test(email); 

}

--> 형식에 맞을경우 true 리턴

새로 배운 문법

isNaN(변수) --> 변수가 숫자면 false, 숫자가 아니면 true

(문자 또는 숫자).substr(숫자1,숫자2)
--> 숫자1에 해당하는 자리에서 시작하여 숫자2의 크기만큼 잘라냄

(문자 또는 숫자).split(변수)
--> 변수에 해당하는 문자를 기준으로 리스트형태로 잘라냄

리스트.find((e) => 조건)
--> 리스트의 각각의 요소를 e로 두고 하나씩 반복, 조건에 맞는 요소들만 골라내어 다시 리스트형태로 만들어냄

문자열.indexOf(문자열)
--> 얖에서부터 시작하여, 매개변수의 문자열이 처음 나오는 자리 수를 리턴함
--> 매개변수의 문자열이 존재하지 않는다면 -1을 리턴함

문자열.lastIndexOf(문자열)
--> 뒤에서부터 시작하여, 매개변수의 문자열이 처음 나오는 자리 수를 리턴함
--> 매개변수의 문자열이 존재하지 않는다면 -1을 리턴함

profile
ㅎㅎ

0개의 댓글