프로그램에서 사용자의 입력을 받을 때 올바른 형식에 맞게 입력했는 지 검증해야하는 경우가 많습니다.
이 검증 과정에서 정규 표현식을 사용하면 쉽게 구현하여 보기 편하게 만들 수 있습니다.
정규 표현식(Regular Expression)이란 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 쓰이는 형식 언어입니다.
정규 표현식 | 설명 |
---|---|
^[0-9]*$ | 숫자 |
^[a-zA-Z]*$ | 영문자 |
^[가-힣]*$ | 한글 |
^\d{2,3}-\d{3,4}-\d{4}$ | 전화번호 |
^01(?:0|1|[6-9])-(?:\d{3}|\d{4})-\d{4}$ | 휴대폰 전화번호 |
\d{6}-[1-4]\d{6} | 주민등록번호 |
String pattern = "^\d{2,3}-\d{3,4}-\d{4}$";
String checkValue = "02-123-4567";
String checkValue2 = "1234-4567-8900";
System.out.println(Pattern.matches(pattern, checkValue); // true
System.out.println(Pattern.matches(pattern, checkValue2); // false
정규 표현식 | 설명 |
---|---|
^ | 문자열 시작 |
$ | 문자열 종료 |
. | 임의의 한 문자(단 |
* | 앞 문자가 없을 수도 무한정 많을 수도 있음 |
+ | 앞 문자가 하나 이상 |
? | 앞 문자가 없거나 하나 있음 |
[] | 문자의 집합이나 범위. 두 문자 사이는 -기호로 범위를 나타냅니다. [] 내에서 ^가 선행하여 존재하면 not을 나타냅니다. |
{} | 횟수 또는 범위를 나타냅니다. |
() | 횟수 또는 범위를 나타냅니다. |
| | 패턴 안에 or 연산을 수행할 때 사용 |
\ | \ 뒤에 일반 문자가 오면 특수 문자 취급, \ 뒤에 특수 문자가 오면("\b") 그 문자 자체를 의미합니다.("\\") |
\b | 단어의 경계 |
\B | 단어가 아닌 것에 대한 경계 |
\A | 입력의 시작 부분 |
\G | 이전 매치의 끝 |
\Z | 입력의 끝이지만 종결자가 있는 경우 |
\z | 입력의 끝 |
\s | 공백 문자 |
\S | 공백 문자가 아닌 나머지 문자 |
\w | 알파벳이나 숫자 |
\W | 알파벳이나 숫자를 제외한 문자 |
\d | 숫자 [0-9]와 동일 |
\D | 숫자를 제외한 모든 문자 |
(?i) | 앞 부분에 (?!)라는 옵션을 넣어주게 되면 대소문자는 구분하지 않습니다. |
문법만 제대로 알고 있으면 패턴을 사용하는 것에는 크게 어렵지 않을 것이라고 생각합니다.
패턴을 이용하면 3~4줄의 코드가 1줄의 코드로 정리될 수 있기 때문에 꽤나 유용한 JAVA API라고 생각합니다. 👍