Java

정규표현식

공부처음하는사람 2024. 7. 10. 14:59

문자열이 정해져 있는 형식으로 구성되어 있는지 검증해야 하는 경우가 있다.

예를 들어 이메일이나 전화번호를 사용자가 제대로 입력했는지 검증할 때 이다.

자바 정규표현식(Regular Expression)을 이용해서 문자열이 올바르게 구성되어 있는지 검증할 수 있다.

기호 설명
. 임의의 단일 문자 (개행 문자를 제외한 모든 문자)
^ 문자열의 시작
$ 문자열의 끝
* 0회 이상 반복 (전의 문자가 0번 이상 반복)
+ 1회 이상 반복 (전의 문자가 1번 이상 반복)
? 0회 또는 1회 반복 (전의 문자가 0번 또는 1번 나타남)
` `
[] 문자의 집합 또는 범위 (e.g., [a-z]는 소문자 알파벳 a부터 z까지 중 하나)
[^] NOT 연산 (e.g., [^a-z]는 소문자 알파벳이 아닌 문자)
() 그룹화 (하나의 단위로 묶어서 서브패턴을 형성)
{n} 정확히 n회 반복
{n,} 최소 n회 반복
{n,m} 최소 n회, 최대 m회 반복
\d 숫자 문자 ([0-9]와 동일)
\D 숫자 문자가 아닌 것 ([^0-9]와 동일)
\w 단어 문자 (알파벳 대소문자, 숫자, 밑줄)
\W 단어 문자가 아닌 것 ([^\w]와 동일)
\s 공백 문자 (스페이스, 탭, 개행 등)
\S 공백 문자가 아닌 것 ([^\s]와 동일)
\b 단어 경계
\B 단어 경계가 아님
\ 이스케이프 문자 (특수 문자를 문자 그대로 사용할 때)

 

 

(02|010)-\d{3,4}-\d{4}

 

02-123-1234 또는 010-1234-5678 같은 전화번호를 위한 정규표현식

 

\w+@\w+\.\w+(\.\w+)?

 

white@naver.com 같은 이메일을 위한 정규표현식

 

\.와 .은 다르다. \.은 문자로서의 점(.)을 말하지만 .은 모든 문자 중에서 한개의 문자를 뜻한다.

 

Pattern 클래스로 검증

java.util.regex 패키지의 Pattern 클래스는 정규표현식으로 문자열을 검증하는 matches() 메서드를 제공한다.

첫번째 매개값은 정규 표현식이고, 두번째는 검증할 문자이다. 검증한 후 결과를 boolean 타입으로 리턴한다.

 

package ch12.sec10;

import java.util.regex.Pattern;

public class PatternEx {
    public static void main(String[] args) {
        String regExp = "(02|010)-\\d{3,4}-\\d{4}";
        String data = "010-123-4567";

        boolean result = Pattern.matches(regExp, data);
        if (result) {
            System.out.println("정규식과 일치");
        } else {
            System.out.println("정규식 불일치");
        }

        regExp = "\\w+@\\w+\\.\\w+(\\.\\w+)?";
        data = "angel@mycompanycom";
        result = Pattern.matches(regExp, data);
        if (result) {
            System.out.println("정규식 일치");
        } else {
            System.out.println("정규식 불일치");
        }
    }
}

'Java' 카테고리의 다른 글

제네릭 (Generic)  (0) 2024.07.10
어노테이션  (0) 2024.07.10
래퍼 (wrapper) 클래스  (0) 2024.07.10
롬복 (Lombok)  (0) 2024.07.09
레코드 선언  (0) 2024.07.09