[Java] 이메일 체크 정규식 사용하기

JunH·2023년 3월 15일

프로젝트 제작중 입력 형식이 이메일이 맞는지, 전화번호 형식이 맞는지 확인해야 할 때가 있다.

프론트 단, 혹은 입력하는 사람이 믿고 넘겨줄수 있다고 생각할 수도 있겠지만, 만약에 아닐 경우에 대비하여 한번 정규표현식을 통해 이메일이 맞는지 체크하는 코드를 한번 만들어보자.

public class EmailValidator {
    
    private static final String EMAIL_REGEX =
        "^[a-zA-Z0-9_+&*-]+(?:\\." +
        "[a-zA-Z0-9_+&*-]+)*@" +
        "(?:[a-zA-Z0-9-]+\\.)+[a-z" +
        "A-Z]{2,7}$";

    public static boolean isValidEmail(String email) {
        Pattern pattern = Pattern.compile(EMAIL_REGEX);
        Matcher matcher = pattern.matcher(email);
        return matcher.matches();
    }
}

정규식의 각종 기호에 대하여 간단히 정리해보자면 다음과 같다.

^ : 시작표시(매칭이 처음부터 되어야 함)
$ : 끝표시(문자열 끝에 매칭되어야 함)
[] : 문자열 셋
[ab][a-z][0-9] 라고 써주면 첫글자는 a또는 b이고 그 다음에 a~z가 나오고 그 뒤에 0~9가 나온다는 뜻..
[]안에서 ^쓰면 그 문자가 아닌것들

  • : 0번 이상 반복
  • : 1번 이상 반복
    ? : 0 또는 1회
    {} : 횟수 표시
    [a]{2}이면 aa이고 [a]{2,}이면 a가 2개 이상인거 [a]{2, 4}이면 aa, aaa, aaaa 이다.
    \d : 숫자, [0-9]와 같음
    \D : 숫자가 아닌 것들 [^0-9]와 같음
    | : Or의 뜻
    {} : 그룹을 묶어 준다.
    . : 뉴라인(\n)제외한 한 문자 (진짜 .을 찍기 위해선 .으로 표시해야 한다.)

0개의 댓글