문자열에서 특정 문자 조합을 찾기 위한 패턴이다.
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번 이상 반복되는지