자바(java)_정규표현식
▶정규표현식이란?
-. 정규표현식(Regular expression)은 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 '형식언어'이다.
-. 정규표현식은 많은 텍스트 편집기와 프로그래밍 언어에서 '문자열의 검색과 치환'을 위해 지원하고 있다.
-. java.util.regex 패키지에 포함되어있다.
▶정규표현식의 사용
예를들어 전화번호 입력하는 란에 숫자만 넣어야하는데 문자가 넣어졌다던가, 이메일을 규칙을 따르지않는 특수문자가 입력이 되었던가 등 규칙에 따라 사용자가 값을 입력해주지 않았을 때 그 규칙들을 걸러내는 표현식이 된다.
내가 설계한 규칙에 부합하는지 부합하지않는지를 받아오기에 이 결과값은
boolean java.util.regex.pattern.matches(
String arg0, CharSequence arg1) ;
-. arg0: 정규 표현식 문자열
-. arg1: 형식을 검사받기 위한 내용
즉, 위의 내용은 arg1이 arg0의 형식에 맞는지를 검사하고 결과를 boolean으로 리턴하는 형식이다.
▶정규표현식의 사용방법
숫자 모양에 대한 형식 검사를 예시로 들어보자
"^[0-9]*$"
-. ^: 문자열의 시작을 표현한다.
-, [0-9] : 0부터 9사이의 숫자를 의미한다.
-. *: 반복하여 검사한다
-. $: 문자열의 종료를 표시한다.
▶정규표현식의 패턴
숫자 모양에 대한 형식 검사
"^[0-9]*$"
영문으로만 구성되었는지에 대한 형식 검사
"^[a-zA-Z]*$"
한글로만 구성되었는지에 대한 형식 검사
"^[ㄱ-ㅎ가-힣]*$"
영문과 숫자로만 구성되었는지에 대한 형식 검사
"^[a-zA-Z0-9]*$"
한글과 숫자로만 구성되었는지에 대한 형식 검사
"^[ㄱ-ㅎ가-힣0-9]*$"
이메일 형식인지에 대한 검사. "아이디@도메인"의 형식을 충족해야 한다.
"^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$"
"-"없이 핸드폰번호인지에 대한 형식검사.
"^01(?:0|1|[6-9])(?:\\d{3}|\\d{4})\\d{4}$"
"-"없이 전화번호인지에 대한 형식검사. 각 부분에 대한 자리수도 충족시켜야 한다.
"^\\d{2,3}\\d{3,4}\\d{4}$"
"-"없이 주민번호에 대한 글자수 및 뒷자리 첫글자가 1~4의 범위에 있는지에 대한 검사
"^\\d{6}[1-4]\\d{6}"
https://hamait.tistory.com/342
▶정규표현식의 활용
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
import java.util.regex.Pattern;
public class Menu1{
public static void main(String[] args) {
//회원가입시 입력한 내용을 가정한 변수값들
String name = "자바학생";
String age = "22";
String email = "user@java.com";
String phone = "01012344555";
//한글여부검사
boolean isKor = Pattern.matches("^[ㄱ-ㅎ가-힣]*$", name);
if(!isKor){
System.out.println("이름은 한글로만 입력해주세요");
return;
/* 실행도중 return 을 만나면 코드 실행이 즉시 중단된다.
void 형은 중간에 return 키워드만 명시한다.
main메서드의 중단 */
}
//숫자여부검사
boolean isNum = Pattern.matches("^[0-9]*$", age);
if(!isNum){
System.out.println("나이는 숫자로만 입력해주세요");
return;
}
//이메일 형식 검사
boolean isEmail = Pattern.matches("^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$", email);
if(!isEmail){
System.out.println("이메일 형식에 맞지 않습니다.");
return;
}
// 휴대폰 형식 검사
boolean isPhone = Pattern.matches("^01(?:0|1|[6-9])(?:\\d{3}|\\d{4})\\d{4}$", phone);
if(!isPhone){
System.out.println("전화번호 형식에 맞지 않습니다.");
return;
}
System.out.println("회원가입 절차를 시작합니다.");
}
}
|
cs |
정규표현식을 활용한 회원가입 절차들이다.
위의 정규표현패턴을 사용하여 전화번호, 이메일등을 모두 구분한다.
여기서 주의할 점은 return인데 이메일이나 전화번호를 하나씩 검사해나가고 틀릴 경우에 어떤 부분이 틀렸는지 사용자에게 안내해주어야하기떄문에 모든 구문마다 return을 달아준다.
return인 이유는 main함수에 void가 있기 때문이고 main함수이고 void형은 중간에 return만 입력을 할 수 있다.
모든 검사가 끝나고 정상적으로 입력이 다 되었을 경우, "회원가입 절차를 시작합니다"라는 문구가 출력된다.