정규표현식

leverest96·2022년 12월 19일
0

Spring / Java

목록 보기
1/20
post-thumbnail

긴 놈을 짧게 만들어버렷!

프로젝트를 진행하며 이미지 업로드 기능을 구현하던 도중 content type을 판단해서 이미지만 업로드 가능하게 만들어야 했다.

따라서, 원래는 contentType이

"image/" + "jpeg|png|..."

이런 식으로 구현하려 했으나 이것보다 어차피 image/ 뒤에 아무것이나 와도 되게하면 됐기에 정규표현식으로 만들기로 했다.

내가 설정한 것은

(^image)(/)\\w*

이다.


추가 정리

아래는 정규표현식으로의 여러 기능들을 표 형식으로 정리해둔 것이다. 그때그때 꺼내먹어요.

  1. 기본 기능

    표현식의미
    ^x문자열의 시작을 표현하며 x 문자로 시작됨을 의미한다.
    x$문자열의 종료를 표현하며 x 문자로 종료됨을 의미한다.
    .x임의의 한 문자의 자리수를 표현하며 문자열이 x 로 끝난다는 것을 의미한다.
    x+반복을 표현하며 x 문자가 한번 이상 반복됨을 의미한다.
    x?존재여부를 표현하며 x 문자가 존재할 수도, 존재하지 않을 수도 있음을 의미한다.
    x*반복여부를 표현하며 x 문자가 0번 또는 그 이상 반복됨을 의미한다.
    x|yor 를 표현하며 x 또는 y 문자가 존재함을 의미한다.
    (x)그룹을 표현하며 x 를 그룹으로 처리함을 의미한다.
    (x)(y)그룹들의 집합을 표현하며 앞에서 부터 순서대로 번호를 부여하여 관리하고 x, y 는 각 그룹의 데이터로 관리된다.
    (x)(?:y)그룹들의 집합에 대한 예외를 표현하며 그룹 집합으로 관리되지 않음을 의미한다.
    x{n}반복을 표현하며 x 문자가 n번 반복됨을 의미한다.
    x{n,}반복을 표현하며 x 문자가 n번 이상 반복됨을 의미한다.
    x{n,m}반복을 표현하며 x 문자가 최소 n번 이상 최대 m 번 이하로 반복됨을 의미한다.

  1. 추가 기능

    표현식의미
    [xy]문자 선택을 표현하며 x 와 y 중에 하나를 의미한다.
    [^xy]not 을 표현하며 x 및 y 를 제외한 문자를 의미한다.
    [x-z]range를 표현하며 x ~ z 사이의 문자를 의미한다.
    \\^escape 를 표현하며 ^ 를 문자로 사용함을 의미한다.
    \\bword boundary를 표현하며 문자와 공백사이의 문자를 의미한다.
    \\Bnon word boundary를 표현하며 문자와 공백사이가 아닌 문자를 의미한다.
    \\ddigit 를 표현하며 숫자를 의미한다.
    \\Dnon digit 를 표현하며 숫자가 아닌 것을 의미한다.
    \\sspace 를 표현하며 공백 문자를 의미한다.
    \\Snon space를 표현하며 공백 문자가 아닌 것을 의미한다.
    \\ttab 을 표현하며 탭 문자를 의미한다.
    \\vvertical tab을 표현하며 수직 탭(?) 문자를 의미한다.
    \\wword 를 표현하며 알파벳 + 숫자 + _ 중의 한 문자임을 의미한다.
    \\Wnon word를 표현하며 알파벳 + 숫자 + _ 가 아닌 문자를 의미한다.

  1. Flag로 처리

    Flag의미
    gGlobal 의 표현하며 대상 문자열내에 모든 패턴들을 검색하는 것을 의미한다.
    iIgnore case 를 표현하며 대상 문자열에 대해서 대/소문자를 식별하지 않는 것을 의미한다.
    mMulti line을 표현하며 대상 문자열이 다중 라인의 문자열인 경우에도 검색하는 것을 의미한다.

  1. 예제

    정규 표현식설명
    ^[0-9]*$숫자
    ^[a-zA-Z]*$영문자
    ^[가-힣]*$한글
    \\w+@\\w+\\.\\w+(\\.\\w+)?이메일
    ^\\d{2,3}-\\d{3,4}-\\d{4}$전화번호
    ^010-\\d{4}-\\d{4}$휴대전화번호
    \\d{6}\\-[1-4]\\d{6}주민등록번호
    - 위의 이메일의 경우, co.kr과 같은 경우를 위해 (\\.\\w+)? 가 추가되었다.

https://hamait.tistory.com/342

profile
응애 난 애기 개발자

0개의 댓글