숨 참고 JAVA 다이브 🌊 (17) - 정규표현식

joyfulwave·2022년 8월 23일
0

숨 참고 JAVA 다이브

목록 보기
17/21

어려울 거 같아서 미뤄뒀던 프로그래밍 공부 이번에 숨 딱 참고 Java 다이브 💦


💡 정규표현식

정규표현식(Regular Expression)은 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식언어예요. 정규표현식은 많은 텍스트 편집기와 프로그래밍 언어에서 문자열의 검색을 위해 지원하고 있어요.

📎 정규표현식의 사용

boolean java.util.regex.Pattern.matches(String arg0, charSequence arg1);

  • arg0는 정규표현식 문자열이에요.
  • arg1은 형식을 검사받기 위한 내용이에요.
  • 즉 위의 기능은 arg1이 arg0의 형식에 맞는지를 검사하고 결과를 boolean 으로 리턴해요.

📎 정규표현식의 종류

⚫️ 숫자 모양에 대한 형식 검사

^[0-9]*$

⚫️ 영문으로만 구성되었는지에 대한 형식 검사

^[a-zA-Z]*$

⚫️ 한글로만 구성되었는지에 대한 형식 검사

^[ㄱ-ㅎ가-힣]*$

⚫️ 영문과 숫자로만 구성되었는지에 대한 형식 검사

^[a-zA-Z0-9]*$

⚫️ 한글과 숫자로만 구성되었는지에 대한 형식 검사

^[ㄱ-ㅎ가-힣0-9]*$

⚫️ 이메일 형식인지에 대한 검사. "아이디@도메인"의 형식을 충족해야 한다.

^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}

📎 정규표현식을 사용한 예제

public class Main01 {

	public static void main(String[] args) {

		// 회원가입시에 입력한 내용을 가정한 변수값들
		
		String name = "자바학생";
		String age = "19";
		String email = "student@java.net";
		String phone = "01012345678";
		
		// 한글 여부 검사
		boolean isKor = Pattern.matches("^[ㄱ-ㅎ가-힣]*$", name);		
		if( !isKor ) {
			System.out.println("이름은 한글로 입력해주세요.");
			// 실행도중 return을 만나면 즉시 중단
			// void 형은 return 키워드만 명시한다.
			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("회원가입 절차를 진행합니다.");
	}

}



다음 다이브에서 또 만나요 🌊




출처
https://media.giphy.com/media/l2Je1bFuOpkNpyqYM/giphy.gif
https://media.giphy.com/media/Jbb3KS22397YQ/giphy.gif
https://hamait.tistory.com/342

0개의 댓글