Language/JAVA

[JAVA] 정규 표현식 클래스

IT수정 2024. 10. 16. 11:28

정규 표현식 클래스

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

 

정규 표현식 작성 방법

표현 및 기호 설명
[ ] 한 개의 문자 [abc] a, b, c 중 하나의 문자
[^abc] a, b, c 이외의 하나의 문자
[a-zA-Z] a~z, A~Z 중 하나의 문자
\d 한 개의 숫자, [0-9]와 동일
\s 공백
\w 한 개의 알파벳 또는 한 개의 숫자, [a-zA-Z_0-9]와 동일
\. .
. 모든 문자 중 한 개의 문자
? 없음 또는 한 개
* 없음 또는 한 개 이상
+ 한 개 이상
{n} 정확히 n개
{n,} 최소한 n개
{n, m} n개부터 m개까지
a | b a 또는 b
() 그룹핑

 

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

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

 

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

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

 

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

 

Pattern 클래스로 검증

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

boolean result = Pattern.matches("정규식", "검증할 문자열");

 

예제 코드

package ch12;

import java.util.regex.Pattern;

public class PatternExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		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"; // angel@mycompany.com 이어야 일치함
		result = Pattern.matches(regExp, data);
		if(result) {
			System.out.println("정규식과 일치합니다.");
		} else {
			System.out.println("정규식과 일치하지 않습니다.");
		}
	}

}

 

출력 결과

정규식과 일치합니다.
정규식과 일치하지 않습니다.

 

'Language > JAVA' 카테고리의 다른 글

[JAVA] 어노테이션  (1) 2024.10.16
[JAVA] 리플렉션  (1) 2024.10.16
[JAVA] 형식 클래스  (0) 2024.10.16
[JAVA] 날짜와 시간 클래스  (0) 2024.10.16
[JAVA] 수학 클래스  (2) 2024.10.16