사용자가 입력한 이메일이 제대로 된 이메일인지 확인하는 함수를 만드세요.
이메일의 조건
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을 리턴함