문자열에서 특정 문자 조합을 찾기 위한 패턴이다.
JavaScript에서 정규 표현식은 하나의 객체로서, RegExp의 exec(), test() 메서드와 String의 match(), matchAll(), replace(), replaceAll(), search(), split() 메서드를 사용할 수 있다.
정규 표현식은 두 가지 방법으로 만들 수 있다.
const re1 = /ab+c/RegExp 객체 생성자 호출const re2 = new RegExp('ab+c')줄이나 단어의 시작과 끝을 나타내는 경계, 일치가 가능한 방법을 나타내는 패턴(전방탐색, 후방탐색 등)이 포함된다.
| 문자 | 의미 |
|---|---|
| ^ | 입력의 시작 |
| $ | 입력의 끝 |
| \b | 단어의 경계(즉, 단어의 시작 또는 끝) |
| \B | 단어가 아닌 경계(둘 다 단어이거나 둘 다 단어가 아니어야 함) |
글자, 숫자처럼 다른 유형의 문자를 구분한다.
| 문자 | 의미 |
|---|---|
| [a-c] | range 의미. 중괄호 안에 포함된 문자 중 일치하는 게 하나라도 존재 |
| \d | [0-9]와 동일 |
| \D | 숫자가 아닌 아무 문자 |
| \w | [A-Za-z0-9_]와 동일 |
| \W | 알파벳, 숫자, _ 가 아닌 문자 |
| \s | 공백 문자 |
| \S | 공백 문자가 아닌 문자 |
| \t | 탭 |
| \r | 캐리지 리턴(CR) |
| \n | 라인피드(LF) |
| \v | vertical 탭 |
| 문자 | 의미 |
|---|---|
| `x | y` |
| [xyz] | 문자 집합 |
| [^xyz] | 부정 집합. 예시에서는 xyz를 포함하지 않는 문자를 의미 |
일치할 문자나 표현이 반복되어야 할 횟수를 나타낸다.
| 문자 | 의미 |
|---|---|
| x* | 앞의 문자(예시에서는 x)가 0번 이상 반복됨 |
| x+ | 앞의 문자(예시에서는 x)가 1번 이상 반복됨 |
| x? | 앞의 문자(예시에서는 x)가 0번 또는 1번 존재함(즉, 있을 수도 없을 수도 있음) |
| x{n} | n이 정수일 경우, 앞의 문자(예시에서는 x)가 정확히 n번 반복됨 |
| x{n,} | n이 정수일 경우, 앞의 문자(예시에서는 x)가 n번 이상 반복됨 |
| x{n,m} | n, m이 정수이고 n보다 m이 클 경우, 앞의 문자(예시에서는 x)가 최소 n번 ~ 최대 m번 반복됨 |
| 문자 | 의미 |
|---|---|
| i | 대소문자 구분 없이 검색 |
| g | 패턴과 일치하는 모든 것을 찾음(g 플래그가 없을 경우 패턴과 일치하는 첫 번째 결과만 반환됨) |
| m | 다중 행 모드 활성화 (문자열이 다중 라인의 문자열인 경우에도 검색) |
| s | .이 개행 문자 \n도 포함하도록 함 |
| u | 유니코드 지원 |
/hello/g
이메일: /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)@(?:[a-z0-9](?:[a-z0-9-][a-z0-9])?.)+a-z0-9?/g
. 문자와 매치되고, 알파벳 소문자, 숫자, 포함된 특수 문자들 중 어느 문자가 0번 이상 반복되는지. 단, 캡쳐링 그룹을 만들지 않음@ 문자와 매치되는지(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+ : 알파벳 소문자, 숫자 중 하나라도 일치하고, (알파벳 소문자, 숫자 중 어느 문자가 0번 이상 반복되고, 알파벳 소문자, 숫자 중 하나라도 일치함)일 수도 아닐 수도 있고, . 문자와 매치되는지. 이 토큰이 1번 이상 반복되는지