개발 & 데이터베이스/JAVA

JAVA 자바 정규표현식으로 주민등록번호, 이메일 유효성 검사하기 (Pattern, Matcher)

K.두부 2023. 8. 9. 18:00
반응형

정규표현식은 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 쓰이는 형식언어다.

주로 전화번호, 주민등록번호, 이메일 등 형식이 정해져있는 데이터에 대해 유효성 검사를 진행할 때 사용된다.

 

정규표현식 사용 방법

자바에서 정규표현식을 사용할 때는 java.util.regex 패키지 안에 있는 Pattern 클래스와 Matcher 클래스를 주로 사용한다.

 

Pattern 클래스

java.util.regex.Pattern 클래스의 matches() 메서드를 활용해서 해당 문자열이 정규표현식에 적합한 상태인지 검증할 수 있다. 매개 변수는 (정규표현식, 문자열)로 2개이고, 리턴값은 true, false를 반환한다.

import java.io.IOException;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) throws IOException {
        String pattern = "^[0-9]*$";
        String value = "123456789";
		
        // 해당 문자열이 숫자로만 이루어졌는지 검증
        boolean regex = Pattern.matches(pattern, value);
        System.out.println(regex);
    }
}
Pattern 클래스 주요 메서드
메서드 설명
complie(String regex) 주어진 정규표현식으로부터 패턴을 만듦
matches 대상 문자열이 패턴과 일치한 지 true/false
asPredicate() 문자열을 일치시키는데 사용할 수 있는 술어를 작성
pattern() 컴파일된 정규표현식을 String형태로 반환
split(CharSequence input) 문자열을 주어진 인자값 CharSequence 패턴에 따라 분리
Pattern 플래그 값 사용 (상수)
플래그 값 설명
Pattern.CANON_EQ None 표준화된 매칭 모드를 활성화
Pattern.CASE_INSENSITIVE 대소문자를 구분하지 않음
Pattern.COMMENTS 공백과 #으로 시작하는 주석을 무시함
Pattern.MULTILINE 수식 ^는 라인의 시작과 수식 $는 라인의 끝과 match
Pattern.DOTALL 수식 .과 모든 문자와 match 되고, \n도 match에 포함
Pattern.UNICODE_CASE
유니코드 기준으로 대소문자 구분없이 match
Pattern.UNIX_LINES
수식 .과 ^ $의 match 시에 한 라인의 끝을 의미하는 \n만 인식함

 

Matcher 클래스

대상 문자열의 패턴을 해석하고 주어진 패턴과 일치하는지 판별할 때 주로 사용된다. 

import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) throws IOException {
        String value = "abCdefG";
        Matcher pattern = Pattern.compile("^[a-zA-Z]*$").matcher(value);
		
        System.out.println(pattern.find());
    }
}
Matcher 클래스 주요 메서드
메서드 설명
matcher(CharSequence input) 대상 문자열이 패턴과 일치한 지 true/false
find() 대상 문자열과 패턴이 일치할 경우 true를 반환하고 그 위치로 이동
find(int start) start 위치부터 매칭 검색을 수행
start() 매칭되는 문자열 시작 위치를 반환
start(int group) 지정된 그룹이 매칭되는 시작 위치를 반환
end() 매칭되는 문자열 끝 다음 위치를 반환
end(int group) 지정된 그룹이 매칭되는 끝 다음 위치를 반환
group() 매칭된 부분을 반환
group(int group) 매칭된 부분 중에 group번 그룹핑 매칭 부분 반환
groupCount() 패턴 내 그룹핑한 전체 갯수를 반환

 

반응형