Java

Java 정규표현식 (Regular Expression)

심나라 2022. 7. 30. 06:26
728x90

Java 정규표현식 (regex : Regular Expression)

자바 프로그램에서 정규표현식을 사용하기 위해서는 java.util.regex 패키지를 사용하는데, 주로 Pattern 클래스와 Matcher 클래스를 사용한다. 

 

정규표현식 문법

^ 문자열의 시작
$ 문자열의 끝
. 임의의 한 문자
* 문자가 0번 이상 발생
+ 문자가 1번 이상 발생
? 문자가 0번 또는 1번 발생
[ ] 문자의 집합 범위를 나타냄
[0-9] : 숫자 (0부터 9), [a-z] : 알파벳 (a부터 z)

앞에 ^가 나오면 not의 의미
^[0-9] : 숫자 (0부터 9) 이외의 모든 문자
{ } 횟수 또는 범위를 의미
( ) 소괄호 안의 문자를 하나의 문자로 인식
| or 조건
\ 확장 문자의 시작
\b 단어의 경계
\B 단어가 아닌 것의 경계
\A 입력의 시작부분
\G 이전 매치의 끝
\Z 입력의 끝이지만 종결자가 있는 경우
\z 입력의 끝
\s 공백문자
\S 공백문자가 아닌 나머지 문자
\w 알파벳이나 숫자
\W 알파벳이나 숫자를 제외한 문자
\d [0-9]와 동일
\D 숫자를 제외한 모든 문자

정규식 예제

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

public class CheckUtil {

    // 휴대폰번호 형식체크
    public static boolean checkPhone(String str) {
        String pattern = "";
        pattern = "^01(?:0|1|[6-9])[.-](?:\\d{3}|\\d{4})[.-](\\d{4})$";

        return Pattern.matches(pattern, str);
    }

    // 휴대폰번호 포맷변경 (01012345678 -> 010-1234-5678, 0101234567 -> 010-123-4567)
    public static String phoneFormat(String number) {
        String regEx = "(\\d{3})(\\d{3,4})(\\d{4})";
        
        return number.replaceAll(regEx, "$1-$2-$3");
    }

    // 2~12 자리의 영문,숫자로만 구성된 ID
    public static boolean checkId(String str) {
        String pattern = "";
        pattern = "^[a-zA-Z0-9]{2,12}$";

        return Pattern.matches(pattern, str);
    }
	
    // 2~12 자리의 영문(대소), 한글로만 구성된 이름
    public static boolean checkName(String str) {
        String pattern = "";
        pattern = "^[a-zA-Z가-힣]{2,12}$";

        return Pattern.matches(pattern, str);
    }

    // 생년월일 1990-02-28 과 같은 형식
    public static boolean checkBirth(String str) {
        String pattern = "";
        pattern = "^(19[0-9][0-9]|20\\d{2})-(0[0-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$";

        return Pattern.matches(pattern, str);
    }

}

 

참고링크

728x90