반응형
728x170
문자열이 정해져 있는 형식(정규 표현식)으로 구성되어 있는지 검증해야 하는 경우가 있다. 예를 들어 이메일 등이다. 그것을 검증 하는 방법이 있다.
정규 표현식 작성 방법
기호 |
설명 | ||
[ ] |
한 개의 문자 |
[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() 메소드가 검증 하는 기능을 제공해준다.
반응형
그리드형
'java' 카테고리의 다른 글
자바 와퍼(wrapper, 포장) 클래스, 박싱(boxing), 언박싱(unboxing), 자동 박싱(auto boxing) (0) | 2017.08.18 |
---|---|
자바 배열 정렬(Arrays.sort() 이용) (0) | 2017.08.18 |
자바 String 클래스(StringBuilder), split 메소드 (2) | 2017.08.18 |
java 연결리스트 만들기(java linked list) (0) | 2017.08.18 |
자바 String 클래스(substring, length, toUpperCase, toLowerCase, replace, indexOf 메소드) (0) | 2017.08.18 |