정규표현식

고대열·2023년 2월 2일
0

JAVA 프로그래밍

목록 보기
11/13

🌳 정규표현식

1. 정규표현식 이란?

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

2. 정규표현식의 사용

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

👍 참고 URL : https://hamait.tistory.com/342

숫자 모양에 대한 형식 검사
"^[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}"

3. 예제를 통한 정규표현 익히기

🚩 RegexHelper 클래스

	/*
	 *  주어진 문자열이 공백이거나 null인지를 검사
	 *  @param	str		- 검사할 문자열
	 *  @return boolean - 공백, null이 아닐 경우 true 리턴
	 */
	public boolean isValue( String str ) {
		boolean result = false;
		if(str != null ) {
			result = !str.trim().equals("");
		}
		return result;
	}
	
	/*
	 * 숫자 모양에 대한 형식 검사
	 * @param	str		- 검사할 문자열
	 * @return	boolean	- 형식에 맞을 경우 true, 맞지 않을 경우 false 
	 */
	
	public boolean isNum( String str ) {
		boolean result = false;
		if(isValue(str)) {
			result = Pattern.matches("^[0-9]*$", str);
		}
		return result;
	}
	
	/*
	 * 영문으로만 구성되어있는지에 대한 형식 검사
	 * @param	str		- 검사할 문자열
	 * @return	boolean	- 형식에 맞을 경우 true, 맞지 않을 경우 false 
	 */
	
	public boolean isEng( String str ) {
		boolean result = false;
		if(isValue(str)) {
			result = Pattern.matches("^[a-zA-Z]*$", str);
		}
		return result;
	}
	/*
	 * 한글으로만 구성되어있는지에 대한 형식 검사
	 * @param	str		- 검사할 문자열
	 * @return	boolean	- 형식에 맞을 경우 true, 맞지 않을 경우 false 
	 */
	
	public boolean isKor( String str ) {
		boolean result = false;
		if(isValue(str)) {
			result = Pattern.matches("^[ㄱ-ㅎ가-힣]*$", str);
		}
		return result;
	}

🚩 main 클래스

		String name = "자바학생";
		String age = "19";
		String email = "forever89829@naver.com";
		String phone = "01040072415";
		
		if(!RegexHelper2.getInstance().isKor(name)) {
			System.out.println("이름을 한글로 입력해주세요.");
			return;
		}
		if(!RegexHelper2.getInstance().isNum(age)) {
			System.out.println("나이는 숫자로만 입력해주세요.");
			return;
		}
		if(!RegexHelper2.getInstance().isEmail(email)) {
			System.out.println("이메을을 형식에 맞게 입력해주세요.");
			return;
		}
		if(!RegexHelper2.getInstance().isPhone(phone)) {
			System.out.println("전화번호를 형식에 맞게 입력해주세요.");
			return;
		}
profile
안녕하세요. 고대열입니다.

0개의 댓글