정규 표현식에 대상 문자열을 검증하는 기능은 java.util.rege.Pattern 클래스의 'matches()'를 활용하여 검증할 수 있습니다.
matches(pattern,str)의 첫번째 매개값은 정규표현식이고 두번째 매개값은 검증 대상 문자열입니다. 검증 후 대상문자열이 정규표현식과 일치하면 true, 그렇지 않다면 false값을 리턴합니다.
import java.util.regex.Pattern;
public class RegexExample {
public static void main(String[] args) {
String pattern = "^[0-9]*$"; //숫자만
String val = "123456789"; //대상문자열
boolean regex = Pattern.matches(pattern, val);
System.out.println(regex); //true
}
}
정규표현식은 유효성검사 코드작성 시 가장 효율적인 방법이다.
import java.util.regex.Pattern;
public class RegexExample {
public static void main(String[] args) {
String name = "홍길동";
String tel = "010-1234-5678";
String email = "test@naver.com";
//유효성 검사
boolean name_check = Pattern.matches("^[가-힣]*$", name);
boolean tel_check = Pattern.matches("^01(?:0|1|[6-9])-(?:\\d{3}|\\d{4})-\\d{4}$", tel);
boolean email_check = Pattern.matches("\\w+@\\w+\\.\\w+(\\.\\w+)?", email);
//출력
System.out.println("이름 : " + name_check);
System.out.println("전화번호 : " + tel_check);
System.out.println("이메일 : " + email_check);
}
}
예제 1)
휴대전화 : ^\d {3}-\d {3,4}-\d {4}$
^ : 패턴 문자열의 시작.
\ : 뒤의 \d를 사용하기 위해서 사용, Java에서 \를 사용하기 위한 escape 문자.
\d : [0-9]와 동일, 숫자.
{3} : 숫자가 3개 온다.
- : 그냥 표현되는 문자열.
\, \d : 위와 동일.
{3,4} : 숫자가 3~4개가 온다.
-, \, \d : 위와 동일.
{4} : 숫자가 4개 온다.
$ : 패턴 문자열의 종료.
예제 2) 이베일
^0-9a-zA-Z@0-9a-zA-Z.[a-zA-Z]{2,3}$
^ : 패턴 문자열의 시작.
[0-9a-zA-Z] : 문자의 범위, 숫자와 알파벳.
() : 소괄호 안의 문자는 1개의 문자로 인식.
[-_.] : - 또는 또는 . 중 1개.
? : [-.]가 없거나 한 개 있음.
[0-9a-zA-Z] : 숫자 또는 알파벳.
* : 위의 소괄호 안의 패턴을 지킨 문자 1개가 (1개인 이유는 소괄호 때문) 없거나 무수히 많을 수 있다.
@ : 그냥 표현되는 문자열.
0-9a-zA-Z* : 위와 동일.
. : \를 제외한 임의의 한 문자. ( 이건 의문이다.)
[a-zA-Z]{2,3} : 알파벳이 2개 또는 3개.
$ : 패턴 문자열의 종료.