세로형
Recent Posts
Recent Comments
Link
04-26 00:00
«   2024/04   »
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
Archives
Today
Total
관리 메뉴

꿈 많은 사람의 이야기

자바 정규 표현식(regular expression) 본문

java

자바 정규 표현식(regular expression)

이수진의 블로그 2017. 8. 18. 08:36

문자열이 정해져 있는 형식(정규 표현식)으로 구성되어 있는지 검증해야 하는 경우가 있다. 예를 들어 이메일 등이다. 그것을 검증 하는 방법이 있다.

정규 표현식 작성 방법

기호
설명

[ ]

한 개의 문자
[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개까지
( )
그룹핑
^
시작
$


이 표를 가지고 실습을 해보자
다음은 02-123-1234 또는 010-1234-5678과 같은 전화번호를 위한 정규 표현식이다.
(02|010)-\d{3,4}-\d{4}

기호
설명
(02|010)
02 또는 010
-
- 포함
\d{3,4}
3자리 또는 4자리 숫자
-
- 포함
\d{4}
4자리 숫자


다음은 이메일을 위한 정규 표현식이다.

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

기호
설명
\w+
한 개 이상의 알파벳 또는 숫자
@
@
\w+
한 개 이상의 알파벳 또는 숫자
\.
.
\w+
한개 이상의 알파벳 또는 숫자
(\.\w+)?
\.\w+이 없거나 한 번 더 올 수 있음
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
public static void main(String[] args) {
        String regExp = "(02|010)-\\d{3,4}-\\d{4}";
        //escape 문자 \ 방지를 위해서 \\를 두개 써준다.
        String data = "010-1111-1234";
        boolean result = Pattern.matches(regExp, data);
        if(result)
        {
            System.out.println("정규식이 일치합니다.");
        }
        else
        {
            System.out.println("정규식이 일치하지 않습니다.");
        }
        
        regExp = "\\w+@\\w+\\.\\w+(\\.\\w+)?";
        data = "asdfnaver.com";
        result = Pattern.matches(regExp, data);
        if(result)
        {
            System.out.println("정규식이 일치합니다.");
        }
        else
        {
            System.out.println("정규식이 일치하지 않습니다.");
        }
 
}
Colored by Color Scripter

 

와 같이 나오게 된다
Pattern 클래스는 문자열의 정규표현식을 검사해준다.
java.util.regex.Pattern 클래스의 정적 메소드인 matches() 메소드가 검증 하는 기능을 제공해준다.


반응형
그리드형
Comments