• 로그인 회원가입에 여러가지 조건을 넣으면서 정규식 표현을 사용하게 되었다.
  • 여러 블로그 자료는 많은데, 다들 사용법이 다 달라서 한번 정리해보려 작성하는 글 : ) 

정규식이란?

  • 정규식(正規式)은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어이다. 
  • 정규 표현식은 많은 텍스트 편집기와 프로그래밍 언어에서 문자열의 검색과 치환을 위해 지원하고 있다.
  • 검색 엔진, 워드 프로세서와 문서 편집기의 찾아 바꾸기 대화상자, 그리고 sed, AWK와 같은 문자 처리 유틸리티, 어휘 분석에 사용된다.
  • 정규 표현식이라는 문구는 일치하는 텍스트가 준수해야 하는 "패턴"을 표현하기 위해 특정한 표준의 텍스트 신택스를 의미하기 위해 사용된다. 
  • 정규 표현식은 유효성 검사 코드 작성 시 가장 효율적인 방법이다.

 

사용규칙

 

문자 클래스, "["와 "]" 사이에 포함된 문자 집합 외부에서는 12개의 문자가, 내부에서는 오직 4개의 문자("\", "^", "-", "]", 자바 닷넷은 "["를 포함)만 특수문자를 의미한다. 아래는 POSIX 기본 및 확장 표준의 문법이다.

 

POSIX 확장 문법

 

문자 클래스

 

 

 

자주 쓰는 정규 표현식

 

https://hbase.tistory.com/160

 

정규식 사용법 및 사용예

  • 정규 표현식을 작성하는 방법은 자바 API java.util.regex 패키지를 사용해야 한다.
  • 자바에서 정규표현식을 사용할때에는 java.util.regex 패키지 안에 있는 Pattern클래스와 Matcher클래스를 주로 사용한다.

① Pattern 클래스

  • 정규 표현식에 대상 문자열을 검증하는 기능은  matches()메소드를 활용하여 검증할 수 있다. 
  • matches() 메서드의 첫번째 매개값은 정규표현식이고 두번째 매개값은 검증 대상 문자열이다.
  • 검증 후 대상문자열이 정규표현식과 일치하면 true, 그렇지 않다면 false값을 리턴한다.

 

Pattern 클래스 주요 메서드
compile(String regex) : 주어진 정규표현식으로부터 패턴을 만듭니다.
matcher(CharSequence input) : 대상 문자열이 패턴과 일치할 경우 true를 반환합니다.
asPredicate() : 문자열을 일치시키는 데 사용할 수있는 술어를 작성합니다.
pattern() : 컴파일된 정규표현식을 String 형태로 반환합니다.
split(CharSequence input) : 문자열을 주어진 인자값 CharSequence 패턴에 따라 분리합니다.

Parttern 플래그 값 사용(상수)
Pattern.CANON_EQ : None표준화된 매칭 모드를 활성화합니다.
Pattern.CASE_INSENSITIVE : 대소문자를 구분하지 않습니다. 
Pattern.COMMENTS : 공백과 #으로 시작하는 주석이 무시됩니다. (라인의 끝까지).
Pattern.MULTILINE : 수식 ‘^’ 는 라인의 시작과, ‘$’ 는 라인의 끝과 match 됩니다.
Pattern.DOTALL : 수식 ‘.’과 모든 문자와 match 되고 ‘\n’ 도 match 에 포함됩니다.
Pattern.UNICODE_CASE : 유니코드를 기준으로 대소문자 구분 없이 match 시킵니다.
Pattert.UNIX_LINES : 수식 ‘.’ 과 ‘^’ 및 ‘$’의 match시에 한 라인의 끝을 의미하는 ‘\n’만 인식됩니다.

 

 

② Matcher 클래스

  • Matcher 클래스는 대상 문자열의 패턴을 해석하고 주어진 패턴과 일치하는지 판별할 때 주로 사용된다.
  • Matcher 클래스의 입력값으로는 CharSequence라는 새로운 인터페이스가 사용되는데 이를 통해 다양한 형태의 입력 데이터로부터 문자 단위의 매칭 기능을 지원 받을 수 있다.
  • Matcher객체는 Pattern객체의 matcher() 메소드를 호출하여 받아올 수 있다.

 

Matcher 클래스 주요 메서드


matches() : 대상 문자열과 패턴이 일치할 경우 true 반환합니다.
find() : 대상 문자열과 패턴이 일치하는 경우 true를 반환하고, 그 위치로 이동합니다.
find(int start) : start위치 이후부터 매칭검색을 수행합니다.
start() : 매칭되는 문자열 시작위치 반환합니다.
start(int group) : 지정된 그룹이 매칭되는 시작위치 반환합니다.
end() : 매칭되는  문자열 끝 다음 문자위치 반환합니다.
end(int group) : 지정되 그룹이 매칭되는 끝 다음 문자위치 반환합니다.
group() : 매칭된 부분을 반환합니다.
group(int group) : 매칭된 부분중 group번 그룹핑 매칭부분 반환합니다. 
groupCount() : 패턴내 그룹핑한(괄호지정) 전체 갯수를 반환합니다.

 

 

 

③ 회원가입 구현 시 사용한 정규식 방법

 

1. build.gradle 코드 추가

 

2. RequestDto

@Size 어노테이션과 @Pattern 어노테이션이 사용되었다.

 

 

3. Contoller 

@Valid 어노테이션이 사용되었다.

@Valid 어노테이션 또한 유효성 검증과 관련이 있는데, 다음 게시물에서 정리하는 걸로 ! 

 

 


참고 자료:

https://coding-factory.tistory.com/529

https://ko.wikipedia.org/wiki/%EC%A0%95%EA%B7%9C_%ED%91%9C%ED%98%84%EC%8B%9D

https://hbase.tistory.com/160

 

'Coding > Spring' 카테고리의 다른 글

[14] JPA (1)  (0) 2022.12.06
[13] @Valid, @Validated (작성중. 수정필요)  (0) 2022.12.06
[11] Database 와 SQL  (0) 2022.12.06
[10] Spring Boot 어노테이션 정리  (0) 2022.12.06
[09] 스프링 MVC 이해  (0) 2022.12.04

+ Recent posts