Regular Expressions in Java

2013. 7. 30. 18:19Java

Regular Expressions in Java


java.util.regex package
에 있는 Matcher 클래스와 Pattern 클래스를 사용하여 문자열을 정규표현식으로 검증할수 있다
.
     
http://www.javamex.com/tutorials/regular_expressions/pattern_matcher.shtml#.UfdJmo1M-X8

e.g. )  boolean b = Pattern.matches(“^[a-zA-Z0-9]*$”, this.input);



A.     정규표현식 설명

^ :
문자열의 시작을 나타냄.
$ :
문자열의 종료를 나타냄
.
. :
임의의 한 문자를 나타냄. (문자의 종류는 가리지 않는다
)
| : or
를 나타냄
.
? :
앞 문자가 없거나 하나있음을 나타냄
.
+ :
앞 문자가 하나 이상임을 나타냄
.
* :
앞 문자가 없을 수도 무한정 많을 수도 있음을 나타냄
.
[] :
문자 클래스를 지정할 때 사용한다. 문자의 집합이나 범위를 나타내며 두 문자 사이는 '-' 기호로 범위를 나타낸다. []내에서 ^ 가 선행하여 나타나면 not 를 나타낸다
.
{} :
선행문자가 나타나는 횟수 또는 범위를 나타낸다
.
a{3}
인 경우 a 3번 반복된 경우를 말하며, a{3,}이면 a 3번 이상 반복인 경우를 말한다. 또한 a{3,5}인 경우

a
3번 이상 5번 이하 반복된 경우를 나타낸다.
( ):
소괄호 ‘( )’ 특수문자는 ‘( )’ 특수문자 안의 글자들을 하나의 문자로 봅니다. 예를 들어 ‘gu(gg){2}le’ 와 같은 패턴을 작성하게 되면 ‘guggggle' 문자열이 문자열에 포함되어 있어야 됩니다
.
|:
패턴 안에서 OR연산을 사용할 때 사용합니다. 예를 들어 'hi|hello' hi hello 가 포함되어있는 문자열을 의미합니다
.
\w :
알파벳이나 숫자

\W :
알파벳이나 숫자를 제외한 문자
\d :
숫자 [0-9]와 동일
\D :
숫자를 제외한 모든 문자
\:
위의 각 기능에서 벗어납니다(escape).
(?i):
앞 부분에 (?i) 라는 옵션을 넣어주면 대소문자를 구분하지 않는다 (물음표+소문자i(아이
))

B.     기본적인 문자열 검증 정규식

^[0-9]*$  : 
숫자만
^[a-zA-Z]*$  : 
영문자만
^[
-]*$  :  한글만
^[a-zA-Z0-9]*$  : 
영어/숫자만
.+ :
한문자 이상의 전체문자를 표시한다.

C. 정규식 표현 예제

이메일 : ^[a-zA-Z0-9]+@[a-zA-Z0-9]+$  or  ^[_0-9a-zA-Z-]+@[0-9a-zA-Z-]+(.[_0-9a-zA-Z-]+)*$
휴대폰
:  ^01(?:01[6-9]) - (?:\d{3}\d{4}) - \d{4}$
일반전화
: ^\d{2,3} - \d{3,4} - \d{4}$
주민등록번호
: \d{6} \- [1-4]\d{6}
IP
주소
: ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3})
파일확장자
: ([^\s]+(\.(?i)(jpg|png|gif|bmp))$)