[JAVA] 정규 표현식 & Pattern 클래스

:-)·2022년 5월 1일
0

☕ JAVA

목록 보기
12/15
post-thumbnail
post-custom-banner

📝 정규 표현식

  • 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 '형식언어'이다.
  • 정규표현식은 많은 텍스트 편집기와 프로그래밍 언어에서 '문자열의 검색과 치환'을
    위해 지원하고 있다.
  • java.util.regex 패키지에 포함되어있다.

정규 표현식 종류


출처 https://hamait.tistory.com/342



📝 Pattern 클래스

  • Pattern 클래스의 matches()메서드는 문자열을 정규 표현식으로
    검증하는 기능을 한다.
boolean java.util.regex.Pattern.matches(String arg0, CharSequence arg1);
  • arg0 : 정규표현식 문자열이다.
  • arg1 : 형식을 검사받기 위한 내용이다.
  • 즉 위의 기능은 arg1이 arg0의 형식에 맞는지를 검사하고
    결과를 boolean으로 리턴한다.

✍ 코드 예시)

import java.util.regex.Pattern;

public class Main {

	public static void main(String[] args) {
		
		// 회원가입시에 입력한 내용을 가정한 변수값들
		String name = "자바학생";
		String age = "22";
		String email = "user@java.com";
		String phone = "01012345678";
		
		// 한글 여부 검사
		boolean isKor = Pattern.matches("^[ㄱ-ㅎ가-힣]*$", name);
		
		if (!isKor) {
			System.out.println("이름은 한글로 입력해 주세요.");
			return;
		}
		
		// 숫자인지 검사
		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("회원가입 절차를 시작합니다.");
		
	}

}

👉 실행 결과

회원가입 절차를 시작합니다.

✍ 코드 예시2 )

❗ 정규식과 일치하지 않을 경우

import java.util.regex.Pattern;

public class Main {

	public static void main(String[] args) {
    
		String name = "java학생";
		
		// 한글 여부 검사
		boolean isKor = Pattern.matches("^[ㄱ-ㅎ가-힣]*$", name);
		
		if (!isKor) {
			System.out.println("정규식과 일치하지 않습니다.");
			return;
		} else {
			System.out.println("정규식과 일치합니다.");
		}
        
    }    
}

👉 실행 결과

정규식과 일치하지 않습니다.









참고자료 : <이것이 자바다>
post-custom-banner

0개의 댓글