정규표현식

yeonhwan619·2022년 9월 13일

기록) JS 기초

목록 보기
8/10

정규표현식(Regular Expression)은 특정한 규칙을 가진 문자열의 집합을 표현하는데 사용하는 형식 언어이다. 정규표현식을 사용하여 특정 문자열을 추출하거나 문자열의 일치 여부를 판단할 수 있다.

정규표현식(Regular Expression)

자바스크립트에서 정규표현식을 사용하기 위해서는 정규표현식을 생성해야한다. 정규표현식을 생성하기 위한 방법으로는 정규표현식 리터럴을 사용하거나, 정규표현식 생성자 함수인 RegEXP를 사용해서 생성한다.

//정규표현식 리터럴
let regExp1 = /pattern/flag;
//정규표현식 생성자 함수
let regExp2 = new RegEXP(/pattern/, 'flag'); // 문자열을 인수로 받음
let anyPattern = /pattern/
let regExp3 = new RegEXP(anyPattern, 'flag');
// 생성자 함수를 사용하면 변수를 정규표현식 생성자 함수의 인수로 전달할 수 있다.

정규표현식 패턴

정규표현식은 패턴을 가진 형식 언어이다. 정규표현식을 유용하게 사용하기 위해서는 사용자의 목적에 맞는 패턴을 표현할 수 있는 형식을 작성할 수 있어야 한다. 정규표현식의 패턴은 다양한 방법으로 표현되지만, 정해진 규칙에 따라 작성되어야만 한다.

정규표현식의 기본

let regExp = /pattern/flag
// 정규표현식의 시작 - 종료는 /~/ 로 나타낸다.
// //의 안에는 작성하고 싶은 정규표현식의 패턴이 들어간다.
// 정규표현식의 매칭,추출에 특별하게 사용되는 플래그는 /~/밖에 사용한다.

그룹화와 캡쳐

그룹화 : '( )' 를 사용하여 해당 패턴을 하나로 묶어 검색하는 것
캡쳐 : '( )' 를 사용했을 때 해당 그룹화된 패턴을 캡쳐하여 따로 저장하는 것

패턴 (메타문자)

패턴의미
^a문자열의 시작을 의미 (= a로 문자열이 시작하는 모든 패턴)
a$문자열의 종료를 의미(= a로 문자열이 끝나는 모든 패턴)
.임의의 한 문자에 해당 (줄바꿈을 제외한 모든 문자)
a+문자가 한 번이상 반복됨을 의미 (= 한번 이상 a가 반복되는 모든 패턴)
a?존재유무판별 (= a가 존재하거나 존재하지 않는 모든 패턴)
a*반복유무 (= a가 0번 이상 반복되는 모든 패턴 / 없음도 포함)
aㅣbor 연산 (= a 또는 b 가 포함되는 모든 패턴)
(abc)그룹화 연산 (= abc를 그룹으로 묶어 하나의 패턴으로 처리, abc를 포함하고 있는 모든 패턴)
(ac)(bc)집합 그룹 연산 (= ac 와 bc를 포함하고 있는 모든 패턴)
(ac)(?:bc)그룹화/캡쳐 제외 예외 연산
a{n}반복 연산 (= a가 n번 반복되는 모든 패턴)
a{n,}이상 반복 연산 (= a가 n번 이상 반복되는 모든 패턴)
a{n,m}제한 반복 연산 (= a가 n번 이상 m번 이하로 반복되는 모든 패턴)
[abcd]문자 선택 연산, [ ]안 나열된 문자들 중 하나 선택 (= a,b,c,d 중 제일 먼저 매칭되는 패턴 추출)
[^abcd][^ ] 사용시 not 연산자 (= a,b,c,d 를 제외한 모든 문자 매칭)
[a-z]' - ' 사용시 range 연산 (= a 부터 z 까지를 포함하는 모든 문자 매칭)
ab(?=c)전방검색연산 (= 해탕 패턴이 일치 했을 때, (?= )앞에 있는 패턴만을 매칭)
ab(?!c)부정전방검색연산 (= 해당 패턴이 일치 했더라도, (?! )안의 문자가 패턴에 포함되지 않아야만 매칭)
ab(?<=c)후방검색연산 (= 해당 패턴이 일치 했을 때, (?<= )뒤에 있는 패턴만을 매칭)
ab(?<!)부정후방검색연산 (= 해당 패턴이 일치 했더라도, (?<! )안의 문자가 패턴에 포함되지 않아야만 매칭)
\^문자 '^' 매칭
\b문자와 공백사이의 문자 매칭
\B문자와 공백사이가 아닌 문자 매칭
\ddigit, 숫자면 모두 매칭
\Dnon digit, 숫자가 아니면 모두 매칭
\sspace (공백문자) 매칭
\Snon space (공백문자가 아닌 문자) 매칭
\ttab (탭문자) 매칭
\vvertical tab(수직탭문자) 매칭
\wword (알파벳, 숫자, '_' )중의 한 문자일 경우 매칭
\Wnon word (알파벳, 숫자, '_')중의 한 문자가 아닐 경우 매칭

플래그

플래그를 사용하면 정규표현식을 사용하여 검색할 때, 다양한 옵션을 통해 검색 결과를 변경할 수 있다.

플래그의미
i (ignore case)대소문자를 구별하지 않고 검색
g (global)문자열 내의 모든 패턴을 검색
m (multi line)문자열의 행이 바뀌더라도 검색을 진행
s\n(개행문자)도 포함하도록 검색, (dotAll method)
uunicode 패턴도 포함하여 검색, (unicode method)
ysticky mode 검색 대상 문자열의 현재 위치에서 탐색 시작, (sticky method)

정규표현식 메소드

1) RegExp.prototype.test
정규 표현식 매칭 결과를 true/false 값으로 반환

2) RegExp.prototype.match
정규 표현식 매칭 결과가 참일 경우 해당 결과값을 문자열로 반환

유용한 정규표현식 테스트 사이트

https://regexr.com

profile

0개의 댓글