java.util.regex 패키지에 있는 Match 클래스와 Pattern 클래스를 사용하여 문자열을 정규표현식으로 검증할 수 있다.
boolean bln = Pattern.matches("^[a-zA-Z0-9]*$", this.input);
정규표현식은 다음과 같은 문법으로 되어 있다.
^ : 문자열의 시작을 나타냄.
$ : 문자열의 종료를 나타냄.
. : 임의의 한 문자를 나타냄. (문자의 종류는 가리지 않는다)
| : or를 나타냄.
? : 앞 문자가 없거나 하나있음을 나타냄.
+ : 앞 문자가 하나 이상임을 나타냄.
* : 앞 문자가 없을 수도 무한정 많을 수도 있음을 나타냄.
만약, .* 으로 정규식이 시작한다면 시작하는 문자열과 같은 문자열이 뒤에 없거나 많을 수도 있는 경우에만 일치를 시킨다. 즉, abc 일 경우 시작문자인 a를 기준으로 a가 없을경우와 a가 무한정 많은 경우에도 true를 반환하기 때문에 abc의 경우는 true를 반환한다.
[] : 문자 클래스를 지정할 때 사용한다. 문자의 집합이나 범위를 나타내면 두 문자 사이는 '-' 기호로 범위를 나타낸다. []내에서 ^ 가 선행하여 나타나면 not 를 나타낸다.
{} : 선행문자가 나타나는 횟수 또는 범위를 나타낸다.
a{3} 인 경우 a가 3번 반복된 경우를 말하며, a{3,}이면 a가 3번 이상 반복인 경우를 말한다. 또한 a{3,5}인 경우 a가 3번 이상 5번 이하 반복된 경우를 나타낸다.
\w : 알파벳이나 숫자
\W : 알파벳이나 숫자를 제외한 문자
\d : 숫자 [0-9]와 동일
\D : 숫자를 제외한 모든 문자
기본적인 문자열 검증 정규식)
^[0-9]*$ : 숫자만
^[a-zA-Z]*$ : 영문자만
^[가-힣]*$ : 한글만
^[a-zA-Z0-9]*$ : 영어/숫자만
정규식 표현 예제)
이메일 : ^[a-zA-Z0-9]+@[a-zA-Z0-9]+$ or ^[_0-9a-zA-Z-]+@[0-9a-zA-Z-]+(.[_0-9a-zA-Z-]+)*$
휴대폰 : ^01(?:0|1|[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})
'소프트웨어 > Java' 카테고리의 다른 글
Apache Commons Configuration을 이용해 설정정보 저장하기 (0) | 2014.04.01 |
---|---|
java:comp/env (0) | 2014.03.18 |
커스텀 Annotation (0) | 2013.10.22 |
마이바티스 익셉션 처리 (0) | 2013.09.26 |
String, StringBuffer, StringBuilder 비교 (0) | 2013.09.25 |