문자열을 검색하고 대체하는 데 사용 가능한 일종의 형식 언어(패턴)이다.
문자 검색
문자 대체
문자 추출
RegExp()
생성자 함수를 사용한다. const regexp1 = new RegExp('^abc');
//(표현식)
const regexp2 = new RegExp('^abc', 'gi');
//(표현식, 플래그)
/
로 감싸진 패턴을 리터럴로 사용한다.
const regexp1 = /^abc/;
// /표현식/
const regexp2 = /^abc/gi;
// /표현식/플래그
//문자열을 백틱(`)을 사용하면 줄바꿈이 가능하다.
const str = `
010-1234-1234
thisemail@gmail.com
https://www.omdbapi.com/?apikey=7035c60c&s=frozen
The quick brown fox jumps over the lazy dog.
abbcccdddd
`
const regexp1 = new RegExp('the', 'gi');
const regexp2 = /the/gi;
console.log(str.match(regexp)); //[the, the]
regexp.test(str)
일치 여부(boolean)를 반환한다.
str.match(regexp)
일치하는 문자열의 배열을 반환한다.
str.replace(regexp, 대체문자)
일치하는 문자열을 대체하고 대체된 문자열을 반환한다.
none
아무 옵션 주지 않으면 가장 먼저 찾은 첫번째 일치하는 것만 반환한다.
g
모든 문자 일치(global)
i
영어 대소문자를 구분 않고 일치(ignore case)
m
여러 줄 일치(multi line)
각각의 줄을 시작과 끝으로 생각하겠다.
* 정규표현식에서 어떤 기능을 하는 기호를 그 기호 자체로 사용하고 싶을 때 백슬래시() 로 명시한다.
^ab
줄 시작에 있는 ab와 일치
ab$
줄 끝에 있는 ab와 일치
.
임의의 한 문자와 일치
어떤 특정한 부분을 어떠한 문자로도 일치해도 상관 없다.
ex) /h..p/ === http, habp, ...
a|b
a 또는 b와 일치
ab?
b가 없거나 b와 일치
ex) /https?/ === https, http ...
{3}
3개 연속적으로 일치
ex) /d{2}/ === dd
{3,}
3개 이상 연속적으로 일치
{3,5}
3개 이상 5개 이하 연속적으로 일치
[abc]
a 또는 b 또는 c
[a-z]
a부터 z 사이의 문자 구간에 일치(영어 소문자)
[A-Z]
A부터 Z 사이의 문자 구간에 일치(영어 대문자)
[0-9]
0부터 9 사이의 문자 구간에 일치(숫자)
ex) /[0-9]{1,}/g === 1개 이상의 숫자가 연속되는 문자
[가-힣]
가부터 힣 사이의 문자 구간에 일치(한글)
\w
word. 63개 문자(대소영문 52개, 숫자 10개, _)
\b
63개 문자에 일치하지 않는 문자 경계(boundary)
ex) /\bf\w{1,}\b/ === 문자 f로 시작하는 1개 이상의 문자인데 경계에서 시작해서 경계에서 끝나는 것(단어)
\d
숫자(digit)에 일치
\s
공백(space, tab, 줄바꿈 등)에 일치
ex) str.replace(/\s/g, '') === str에서 모든 공백 문자를 없애라.
?=
앞쪽 일치
ex) /.{1,}(?=@)/ === @ 앞쪽에 일치하는 1개 이상 문자