본문 바로가기

Dev. Etc/knowledge

[Regex]정규표현식 기초 ( 정의 및 문자별 의미 ) / 자주 사용하는 정규표현식

 

 

 

정규 표현식이란?

: 문자열을 바탕으로 검색해 패턴과 일치하는지 조사하고, 분할하는 문자열 처리 방법입니다.

 

 

 

 

* 문자 클래스를 정의할 때 대괄호 안에 사용하는 메타 문자

 

메타 문자 설명
/ 이스케이프 문자
^ 부정 (첫 번쨰 문자에 놓여 있을 때만)
- 문자 범위 지정

 

 

 

 

* 문자 클래스를 정의할 때 쓰는 대괄호 이외의 메타 문자

 

메타 문자 설명
^x 맨 앞부분 일치 (여러행이라면 행의 맨앞)
x$ 맨 뒷부분 일치 (여러행이라면 행의 맨 뒤)
.x 임의의 한 문자 (단, 개행 제외)
x|y OR을 나타내며, x문자 또는 y문자가 존재여부(선택지의 단락)
() 서브 패턴 감싸기
x{n} x문자가 n회 반복
x{n,} x문자가 n회 이상 반복
x{n,m} x문자가 n~m회 반복
x? x문자의 존재여부를 나타내며, x문자가 존재할수도있고 존재하지 않을수도 있음을 나타냄
x* x문자가 0번 또는 그 이상 반복

 

 

 

 

 

* 지정된 문자열의 범위 중에서 한 문자만을 선택하다는 특수한 의미

('[]' 는 내부에 지정된 문자열의 범위 중에서 한 문자만을 선택하다는 특수한 의미를 가진다. )

 

메타 문자 설명
[xy] x와 y중에 하나만을 나타냄
[^xy] not을 나타내며, x와 y를 제외한 문자를 의미
[x-z] 범위를 나타내며, x~z사이의 문자를 의미

 

 

 

 

* 사전 정의 문자 클래스

 

사전 정의 문자 클래스 의미
 /d 숫자를 나타내며, [0-9]와 같음
 /D 숫자가 아닌것을 나타냄, [^0-9]와 같음
 /s 공백문자를 나타내며, [\n\r\t\x0B]와 같음
 /S 공백문자가 아닌것을 나타냄, [^\s]와 같음
 /w 영숫자를 나타내며, [0-9a-z-A-Z]와 같음
 /W 영숫자가 아닌것을 나타냄 [^\w]와 같음
 /b 문자와 공백사이의 문자를 의미
 /B 문자왁 공백사이의 문자가 아닌것을 의미

 

 

 

 

 

* 정규표현식을 쓸때 사용되는 Flag

 

Flag 의미
g 대상 문자열 내에 모든 패턴들을 검색
i 대상 문자열에 대해서 대/소문자를 식별하지않는 것을 의미
m 대상 문자열이 다중 라인의 문자열인 경우에도 검색

 

 

 

 

* 후치 옵션

 

후치 옵션 설명
i 알파벳 대/소문자를 구별하지 않는다.
m 행 단위로 일치시킨다.
s 마침표(.)로 개행문자를 일치시킨다.
u 패턴 문자를 UTF-8 인코딩으로 다룬다.
x 패턴 속에 있는 공백문자를 무시한다.

 

 


 

 

 

※ 예제

 

 /[0-9] /g

 

전체에서 0~9 숫자중에 '하나'만의 숫자를 찾음

 

/[no]/g

 

전체에서 'n' 또는 'o'중 '하나'만의 문자를 찾음

 

/[coffee]/g

 

전체에서 'coffee'라는 하나의 단어와 매칭되는것을 찾음

 

이메일

/^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i

 

0~9사이 숫자 또는 a~z , A~Z 알파벳 아무거나로 시작하고, 중간에 -,_,.이 존재할수있으며 0~9,  a~z , A~Z 반복할 수 있다.

 

다음으로 '@'가 반드시 존재해야 하고 0~9,  a~z , A~Z중 하나가 존재해야하고 그뒤로는 중간에 -,_,.이 존재할수있으며 0~9,  a~z , A~Z 반복할 수 있다.

 

다음으로 '.'이 반드시 존재해야 하고 a~z, A~Z가 2개~3개 존재해야한다.

 

마지막으로 이모든 정규표현식을 대/소문자 구분하지 않는다.

 

일반 전화번호

/^\d{3}-\d{3,4}-\d{4}$/

 

숫자 3개로 시작해야하며, '-'이 반드시 존재해야 한다.

숫자 3개~4개가 존재하고, '-'이 반드시 존재해야 한다.

숫자 4개가 존재해야한다.

 

핸드폰 번호

/^01([0|1|6|7|8|9]?)-?([0-9]{3,4})-?([0-9]{4})$/

시작을 숫자 01로 시작하고 0,1,6,7,8,9가 or으로 다음에 존재해야한다.

'-'이 반드시 존재하고, 0~9 숫자가 3개~4개 존재되어야한다.

'-'이 반드시 존재하고 0~9 숫자가 4개 존재해야한다.

 

URL

^(https?):\/\/([^:\/\s]+)(:([^\/]*))?((\/[^\s/\/]+)*)?\/?([^#\s\?]*)(\?([^#\s]*))?(#(\w*))?$
  



이메일 주소

 

(\w+\.)*\w+@(\w+\.)+[A-Za-z]+

 

전자우편 주소

 

/^[a-z0-9_+.-]+@([a-z0-9-]+\.)+[a-z0-9]{2,4}$/

 

jpg, gif 또는 png 확장자를 가진 그림 파일명


/([^\s]+(?=\.(jpg|gif|png))\.\2)/

 

날짜 - 예, 8/27/2019 혹은 8/27/19

/^\d{1,2}\/\d{1,2}\/\d{2,4}$/ 

 

 

 

 

 

 

레퍼런스 : https://hamait.tistory.com/342

https://gocoding.tistory.com/93