티스토리 뷰
주의 사항!
- 이 글은 제가 직접 공부하는 중에 작성되고 있습니다.
- 따라서 제가 이해하는 그대로의 내용이 포함됩니다.
- 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다.
문자열이 정해져 있는 형식(정규 표현식)으로 구성되어 있는지 검증해야 하는 경우가 있습니다. 예를 들어, 이메일, 전화번호를 사용자가 제대로 입력했는지 검증해야 할 때 정규 표현식과 비교합니다.
정규 표현식 작성 방법
정규 표현식을 작성하는 방법은 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 |