메일주소 판별하기(부제: 정규식씨 나와봐요)

오늘 풀었던 퀴즈긴 한데 풀이 썩히기 아까워서 올림… 힌트에는 include를 쓰라고 나와있는데 본인은 보자마자 정규식 생각했다. 정규식으로 형식 지정하면 이메일도 찾을 수 있거든… 물론 include를 사용한 풀이도 있다.


include 버전

let q2_mail = $('#input-q2').val();
if (q2_mail.includes('@')) {
    q2_mail.split('@')
    alert(q2_mail.split('@')[1])
} else {
    alert('이메일이 아닙니다!')
}
// 평범한 버전

정규식 버전

let q2_mail = $('#input-q2').val();
if (q2_mail.match('@') != false) {
    let adress = q2_mail.match(/\w+[.]\w+/)
    alert(adress)
} else {
    alert('이메일이 아닙니다!')
}
// 정규식 버전

정규식 버전은 match(‘@’) == true 했더니 에러떠서 not false 줘버림.

둘이 무슨 차이냐면 접근 방식이 좀 다르다. 인클루드 버전은 입력값에 @가 있으면 입력값을 @로 나눠서 뒤에걸 출력하는거고, 정규식 버전은 입력값에 @가 있으면 골뱅이 뒤에꺼(\w+[.]\w+)를 뽑으라는 얘기다. 저게 정규식 형식을 지정한거라 저렇게 하면 메일주소가 뽑힌다.

기본적으로 메일주소에 골뱅이(@)가 있다는 걸 이용한 것과 메일주소 뒤의 도메인을 출력하는 건 같다. 대신 ID를 출력하는 버전의 경우 저걸로 하려면 골치 썩는 게 단점.