정규표현식은 문자열을 처리하는 방법 중 하나로, 문자열에서 특정 내용을 찾거나 대체 또는 발췌하는데 사용한다. 반복문이나 조건문으로 표현해야하는 복잡한 연산도 정규표현식을 사용하면 보다 간단하게 표현할 수 있다. 정규표현식은 리터럴 표기법으로 생성할 수 있으며 리터럴 표기법의 형식은 위의 그림과 같다.
플래그는 정규표현식의 검색방법을 지정한다.
Flag | Meaning | Description |
---|---|---|
i | Imgnore Case | 대소문자를 구분하지 않고 검색한다. |
g | Global | 문자열 내의 모든 패턴을 검색한다. |
m | Multi Line | 문자열의 행이 바뀌더라도 검색을 계속한다. |
const targetStr = 'Is this all there is?';
// 문자열 내의 is를 대소문자 구별하여 한 번만 검색
let regExp = /is/;
targetStr.match(regExp) // ["is", index: 5, input: "Is this all there is?", groups: undefined]
// 문자열 내의 is를 대소문자 "구별하지 않고 모두" 검색
regExp = /is/ig
targetStr.match(regExp) // (3) ["Is", "is", "is"]
옵션사항으로 생략가능하다.
플래그를 지정하지 않을 경우
타깃 문자열 내에서 검색하려는 문자는 대소문자를 구분하여 검색하게 되며 검색 문자와 매칭되는 대상이 1개 이상이더라도 첫 번째 매칭한 대상만을 반환하고 검색을 종료한다.
패턴에는 검색하고 싶은 문자열을 지정한다.
표현식 | 의미 |
---|---|
. | 문자, 숫자, 기호, 공백 등을 포함한 모든 문자 문자 자릿수를 지정할 때도 사용 |
^ x | x로 시작하는 문자열 |
[^ xyz ] | not. 부정을 의미 x, y, z를 제외한 모든 문자 (숫자, 문자, 기호 포함) |
x$ | x로 끝나는 문자열 |
x? | x가 없거나 하나인 문자열 |
x* | x가 없거나 한 번 이상 반복되는 문자열 |
x+ | x가 한 번이상 반복되는 문자열 |
x{n} | x가 n번 반복되는 문자열 |
x{n,} | x가 n번 이상 반복되는 문자열 |
x{n, m} | 앞문자 x가 n번 이상 m번 이하 반복되는 문자열 |
x | y [ xy] | OR x 또는 y |
[ x- y] | 범위지정 x ~ y 까지의 문자 |
() | 그룹지정 |
\d | 숫자 |
\D | 숫자가 아닌 것 |
\w | word를 의미 알파벳, 숫자, _ 중의 한 문자 |
\W | not /w 알파벳, 숫자, _ 를 제외한 나머지 문자 |
\s | 공백 문자 |
\S | 공백 문자가 아닌 것 |
이스케이핑(escaping)
위와 같은 정규식에서 특정 의미를 지닌 특수 문자를 검색하고 싶은 문자로서 패턴에 지정하고 싶다면 백슬래시 \
를 사용한다.
예를 들어 마침표 .
가 들어가는 문자를 검색하고 싶을 때 /./
이 아닌 /\./
로 패턴을 지정한다.
이러한 \
의 역할을 이스케이핑(escaping)이라 한다.
[]
로 묶인 문자는 OR로 연결된 하나의 문자로 인식한다.