정규 표현식
- 일정한 패턴을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어
- JS 고유 문법은 아님
- 대부분의 프로그래밍 언어와 코드 에디터에 내장되어 있음
- 패턴 매칭 기능 제공
- 특정 패턴과 일치하는 문자열을 검색 / 추출 / 치환하는 기능
생성하기
정규 표현식 리터럴
/regexp/i
시작기호 / 패턴 regexp 종료기호 / 플래그 i
const target = 'Is this all there is?';
const regexp = /is/i;
regexp.test(target);
RegExp 생성자 함수
new RegExp(pattern[, flags])
const target = 'Is this all there is?';
const regexp = new RegExp(/is/i);
regexp.test(target);
RegExp 메서드
1. RegExp.prototype.exec
- 패턴을 검색하여 매칭 결과를 배열로 반환
- 매칭 결과가 없는 경우, null 반환
- 첫 번째 매칭 결과만 반환
const target = 'Is this all there is?';
const regExp = /is/;
regExp.exec(target);
2. RegExp.Prototype.test
- 패턴을 검색하여 매칭 결과를 불리언 값으로 반환
3. String.prototype.match
- 패턴을 검색하여 매칭 결과를 배열로 반환
- 매칭 결과가 없는 경우, null 반환
- 모든 매칭 결과를 반환
const target = 'Is this all there is?';
const regExp = /is/;
target.match(regExp);
플래그
- 정규 표현식의 검색 방식 설정
- option
- 선택적 사용 가능
- 하나 이상의 플래그 동시 설정 가능
i
- ignore case
- 대소문자 구별하지 않고 검색
g
m
- multi line
- 문자열의 행이 바뀌어도 검색 계속 진행
패턴
- 정규 표현식 문자열의 일정한 규칙 표현
- /로 열고 닫으며, 문자열의 따옴표 생략
임의의 문자열
const target = 'Is this all there is?';
const regExp = /.../g;
target.match(regExp);
반복 검색
{m, n}
은 앞선 패턴이 최소 m번, 최대 n번 반복되는 문자열
{n}
= {n, n}
{n,}
앞선 패턴이 최소 n번 이상 반복되는 문자열
+
= {1,}
최소 1번 이상 반복되는 문자열
?
= {0,1}
최대 한 번 이상 반복되는 문자열
const target = 'A AA B BB';
const regExp = /A{1,2}/g;
target.match(regExp);
OR 검색
const target = 'A AA B BB';
const regExp = /A|B/g;
target.match(regExp);
const target = 'A AA B BB';
const regExp = /A+|B+/g;
target.match(regExp);
[]
내의 문자는 or로 동작
- ex. [AB]
- 범위를 지정하려면
[]
내에 -
를 사용
const target = 'A AA BB ZZ Aa Bb';
const regExp = /[A-Z]/g;
target.match(regExp);
NOT 검색
[]
내의 ^
는 not을 의미
- ex. [^0-9]
: 숫자를 제외한 문자
시작 위치로 검색
마지막 위치로 검색
그외
/d
숫자
/D
숫자가 아닌 문자
/w
알파벳, 숫자, 언더스코어 ([A-Za-z0-9_]와 동일)
/W
알파벳, 숫자, 언더스코어가 아닌 문자