Java 정규표현식

NasK!m_311·2022년 8월 31일
0

Java

목록 보기
34/39
post-thumbnail

💡 정규표현식이란?

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

💡 정규표현식의 사용

package patternCheck;

import java.util.regex.Pattern;

public class Main{

	public static void main(String[] args) {
    
		boolean 변수명 = Pattern.matches(String arg0, charSequence arg1);
    
    }	// main method
    
}	// Main class   

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

💡 정규표현식 문자열

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

💡 정규표현식을 이용한 메소드 만들기

package patternCheck;

import java.util.regex.Pattern;

public class RegexHelper {
	//-------------------------------------------------------싱글톤 객체 생성시작
	private static RegexHelper regexHelper;
	
	public static RegexHelper getInstance() {
		if(regexHelper == null) {
			regexHelper = new RegexHelper();
		}
		return regexHelper;
	}
	
	public static void feeInstance() {
		regexHelper = null;
	}
	
	private 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;
	}
    
//-----------------------------------------------------------------------------

	/*
	 * '영문과 숫자로만 구성되었는지에 대한 형식 검사'
     *
	 * @param 	str 		- 검사할 문자열
	 * @return	boolean		- 형식에 맞을 경우 true, 맞지 않을경우 false 
	 */
     
	public boolean isEngNum( String str ) {
		boolean result = false;
		
		if( isValue(str) ) {
			result = Pattern.matches("^[a-zA-Z0-9]*$", str);
		}
		
		return result;
	}
    
//-----------------------------------------------------------------------------

 }	// RegexHelper Class	    
profile
메리아빠, 먹다가 죽어도 되는 개발자.(살뺴자....)

0개의 댓글