정규표현식 정리

한호수 (The Lake)·2022년 10월 13일
0

정규표현식

정규표현식(正規表現式, Regular Expression)은 문자열을 처리하는 방법 중의 하나로 특정한 조건의 문자를 '검색'하거나 '치환'하는 과정을 매우 간편하게 처리 할 수 있도록 하는 수단이다.

정규식 구성

슬래쉬 문자 두개 사이로 정규식 패턴이 들어가는 형태이다. 슬래쉬 뒤에 오는 문자들은 플래그(Flag)라고 하며 정규식을 생성할 때 고급 검색을 위한 전역 옵션을 설정할 수 있도록 지원하는 기능이다.

s.replace(/[^1-9]/g,"") //  [^1-9]는 정규식패턴, /g는 플래그 이다.

플래그

FlagMeaning Description사용법
iIgnore Case대소문자를 구별하지 않고 검색한다.
gGlobal문자열 내의 모든 패턴을 검색한다.
mMulti Line문자열의 행이 바뀌더라도 검색을 계속한다.
s​.​(모든 문자 정규식)이 개행 문자 \n도 포함하도록
uunicode유니코드 전체를 지원
ysticky문자 내 특정 위치에서 검색을 진행하는 ‘sticky’ 모드를 활성화

정규식 패턴 기호

정규식 특정 문자 숫자 매칭 패턴

패턴의미
a-zA-Z영어알파벳(-으로 범위 지정)
ㄱ-ㅎ가-힣한글 문자(-으로 범위 지정)
0-9숫자(-으로 범위 지정)
.모든 문자열(숫자, 한글, 영어, 특수기호, 공백 모두) 단, 줄바꿈 X
\d숫자
\D숫자가 아닌 것
\w밑줄 문자를 포함한 영숫자 문자에 대응
[A-Za-z0-9_]와 동일
\W\w 가 아닌 것
\sspace 공백
\Sspace 공백이 아닌 것
\특수기호특수기호 * \^ \& ! \? ...등
\b63개 문자(영문 대소문자 52개 + 숫자 10개 + _(underscore))가
아닌 나머지 문자에 일치하는 경계(boundary)
\B63개 문자에 일치하는 경계
\x16진수 문자에 일치 /\x61/는 a에 일치
\08진수 문자에 일치/\141/은 a에 일치
\u유니코드(Unicode) 문자에 일치/\u0061/는 a에 일치
\c제어(Control) 문자에 일치
\f폼 피드(FF, U+000C) 문자에 일치
\n줄 바꿈(LF, U+000A) 문자에 일치
\r캐리지 리턴(CR, U+000D) 문자에 일치
\t탭 (U+0009) 문자에 일치

정규식 검색 기준 패턴

기호의미
|OR a|b
[]괄호안의 문자들 중 하나. or 처리 묶음 보면 된다.
/abc/ : "abc"를 포함하는
/[abc]/ : "a" 또는 "b" 또는 "c" 를 포함하는
[다-바] : 다 or 라 or 마 or 바
[^문자]괄호안의 문자를 제외한 것
[^lgEn] "l" "g" "E" "N" 4개 문자를 제외
※ 대괄호 안에서 쓰면 제외의 뜻, 대괄호 밖에서 쓰면 시작점 뜻
^문자열특정 문자열로 시작 (시작점) /^www/
문자열$특정 문자열로 끝남 (종착점) /com$/

정규식 갯수 반복 패턴

기호의미
?없거나 or 최대 한개만 /apple?/
*없거나 or 있거나 (여러개) /apple*/
+최소 한개 or 여러개 /apple+/
*?없거나, 있거나 and 없거나, 최대한개 : 없음
{0}와 동일
+?최소한개, 있거나 and 없거나, 최대한개 : 한개
{1}와 동일
{n}n개
{Min,}최소 Min개 이상
{Min, Max}최소 Min개 이상, 최대 Max개 이하
{3,5}? == {3}와 동일

정규식 그룹 패턴

기호의미
( )그룹화 및 캡쳐
(?: 패턴)그룹화 (캡쳐 X)
(?=)앞쪽 일치(Lookahead), /ab(?=c)/
(?!)부정 앞쪽 일치(Negative Lookahead),/ab(?!c)/
(?<=)뒤쪽 일치(Lookbehind),/(?<=ab)c/
(?<!)부정 뒤쪽 일치(Negative Lookbehind),/(?<!ab)c/

출처
https://inpa.tistory.com/entry/JS-%F0%9F%93%9A-%EC%A0%95%EA%B7%9C%EC%8B%9D-RegExp-%EB%88%84%EA%B5%AC%EB%82%98-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-%EC%89%BD%EA%B2%8C-%EC%A0%95%EB%A6%AC

profile
항상 근거를 찾는 사람이 되자

0개의 댓글