Language/Java

[Java] 정규 표현식 클래스

seungwook_TIL 2025. 3. 25. 16:09

이 게시글은 이것이 자바다(저자 : 신용권, 임경균)의 책과 동영상 강의를 참고하여 개인적으로 정리하는 글임을 알립니다. 


정규 표현식 클래스

  • 문자열이 정해져 있는 형식으로 구성되어 있는지 검증해야 하는 경우가 있다. 
  • 예를 들어 이메일이나 전화번호를 사용자가 제대로 입력했는지 검증할 때이다. 
  • 자바는 정규 표현식(Regular Expression)을 이용해서 문자열이 올바르게 구성되어 있는지 검증한다.

 

 

정규 표현식 작성 방법

  • 정규 표현식은 문자 또는 숫자와 관련된 표현과 반복 기호가 결합된 문자열이다.
  • 아래는 정규 표현식을 구성하는 표현 및 기호에 대한 설명이다.

 

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

// 02-123-1234 형태
"^02-\\d{3}-\\d{4}$"

// 010-1234-5678 형태
"^010-\\d{4}-\\d{4}$"

// 둘 다 허용
"^(02|010)-\\d{3,4}-\\d{4}$"



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

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

// 또는 더 정확한 버전
"^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}$"

주의할 점은 \.과 .은 다르다는 것이다. \.은 문자로서의 점(.)을 말하지만 .은 모든 문자 중에서 한 개의 문자를 뜻한다.

 

Pattern 클래스로 검증

  • java.util.regex 패키지의 Pattern 클래스는 정규 표현식으로 문자열을 검증하는 matches() 메소드를 제공한다.
  • 첫 번째 매개값은 정규 표현식이고, 두 번째 매개값은 검증할 문자열이다. 검증한 후의 결과는 boolean 타입으로 리턴된다.

 

import java.util.regex.Pattern;

public class PatternExample {
	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("정규식과 일치하지 않습니다.");
		}
	}
}