티스토리 뷰

주의 사항!

  • 이 글은 제가 직접 공부하는 중에 작성되고 있습니다.
  • 따라서 제가 이해하는 그대로의 내용이 포함됩니다.
  • 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다.


문자열이 정해져 있는 형식(정규 표현식)으로 구성되어 있는지 검증해야 하는 경우가 있습니다. 예를 들어, 이메일, 전화번호를 사용자가 제대로 입력했는지 검증해야 할 때 정규 표현식과 비교합니다.

 

정규 표현식 작성 방법

정규 표현식을 작성하는 방법은 API 도큐먼트에서 java.util.regex.Pattern 클래스를 찾아 Summary of regular-expression constructs를 참조하면 되는데 이해하기가 쉽지 않습니다. 간단히 말해서 정규 표현식은 문자 또는 숫자 기호와 반복 기호가 결합된 문자열입니다. 다음은 정규 표현식을 작성하는데 기본적으로 알아두어야 할 기호들에 대한 설명입니다.

기호 설명
[ ] 한 개의 문자 [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개까지
( ) 그룹핑(grouping)

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

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

//(02|010) : 02 또는 010
//- : - 포함
//\d{3,4} : 3자리 또는 4자리 숫자

다음은 korean@gmail.con과 같은 이메일을 위한 정규 표현식입니다.

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

//\w+ : 한 개 이상의 알페벳 또는 숫자
// @ : @ 포함
// \. : . 포함
//(\.\w+) : \.\w+이 없거나 한 번 더 올 수 있음

 

Pattern 클래스

문자열을 정규 표현식으로 검증하는 기능은 java.util.regex.Pattern 클래스의 정적 메서드인 matches() 메서드가 제공합니다.

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

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

 

다음 예제는 전화번호와 이메일을 검증하는 코드입니다.

//Main.java
package Example;

import java.util.regex.Pattern;

public class Main {
	public static void main(String[] args) {
		String regExp = "(02|010)-\\d{3,4}?-\\d{4}";
		String data = "010-1234-5678";
		
		boolean result = Pattern.matches(regExp, data);
		
		if(result) {
			System.out.println("정규식과 일치합니다.");
		} else {
			System.out.println("정규식과 일치하지 않습니다.");
		}
		
		regExp = "\\w+@\\w+\\.\\w+(\\.\\w+)?";
		data = "korean@gmailcom";
		result = Pattern.matches(regExp, data);
		
		if(result) {
			System.out.println("정규식과 일치합니다.");
		} else {
			System.out.println("정규식과 일치하지 않습니다.");
		}
	}
}

/*
실행결과

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

*/

'공부 일지 > JAVA 공부 일지' 카테고리의 다른 글

자바, Wrapper(포장) 클래스  (0) 2021.04.21
자바, Arrays 클래스  (0) 2021.04.21
자바, StringBuffer, StringBuilder 클래스  (0) 2021.04.21
자바, StringTokenizer 클래스  (0) 2021.04.21
자바, String 클래스  (0) 2021.04.20
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함