728x90
정규 표현식
: 일정한 패턴을 가진 문자열의 집합을 표현하기 위해 사용되는 형식 언어
정규 표현식 생성
- 형태 :
/regexp/i
/ ... /
: 시작/종료 기호regexp
: 패턴i
: 플래그
예시)
const target = 'Youll never walk alone';
const regexp = /never/i
regexp.test(target); // true
정규 표현식 생성자 함수
- 형태 :
new RegExp(pattern[, flags])
- 플래그 종류 : g, i, m, u, y
- 사용 : 정규 표현식 생성자 함수를 사용하여 동적으로 RegExp 객체를 생성할 수 있다.
예시)
const count = (str, char) => (str.match(new RegExp(char, 'gi')) ?? []).length;
count('Is this all there is?', 'is'); // 3
count('Is this all there is?', 'xx'); // 0
RegExp 메서드
RegExp.prototype.exec
- 형태 :
정규표현식 객체.exec(인수)
- 특징 : 정규표현식 객체를 전달받은 인수를 기준으로 검색해서 매칭 결과를 배열로 반환한다.
RegExp.prototype.test
- 형태 :
정규표현식 객체.test(인수)
- 특징 : 정규 표현식 객체를 전달받은 인수를 기준으로 검색하여 매칭 결과를
true
혹은false
로 반환한다.
String.prototype.match
- 형태 :
문자열객체.match(정규표현식 객체)
- 특징 : 문자열 객체를 전달받은 정규표현식 객체를 기준으로 매칭하여 결과를 배열로 반환한다.
플래그
: 정규 표현식의 검색 방식을 설정하기 위하여 플래그를 사용한다. 플래그는 하나 이상을 동시에 설정할 수도 있다.
i
(ignore case) : 대소문자를 구별하지 않고 패턴을 검색한다.g
(global) : 대상 문자열 내에서 패턴과 일치하는 모든 문자열을 전역 검색한다.m
(multi line) : 문자열의 행이 바뀌더라도 패턴 검색을 계속한다.
패턴
: 플래그는 검색 방식을 설정하기 위함이고, 패턴은 검색할 문자열의 일정한 규칙을 표현하기 위함이다.
- 지정된 문자열 검색 :
/검색할 문자열/플래그
- 임의의 문자열 검색 :
/ ... /플래그
- 반복 검색 :
/검색할 문자열{최소 반복수,최대 반복수}/플래그
단, 최소 반복수와 최대 반복수 사이에는 , 외에 공백은 포함되어 있으면 안된다. - OR 검색 :
/문자열1|문자열2/플래그
- NOT 검색 :
/[^문자열]/플래그
: 검색할 문자열 내에 NOT을 의미하는^
을 붙인다. - 시작 위치로 검색 :
/^문자열/
: 검색할 문자열 앞에^
를 붙인다. - 마지막 위치로 검색 :
/문자열$/
:$
는 마지막을 의미한다.
※ 문자열 대신 사용하는 표현
\d
:[0-9]
와 같으며 숫자를 의미한다.\D
:\d
와 반대되는 의미를 가지며, 숫자 외에 다른 문자를 의미한다.\w
:[A-Za-z0-9_]
와 같으며 알파벳, 숫자, 언더스코어를 의미한다\W
:\w
와 반대되는 의미를 가지며, 알파벳, 숫자, 언더스코어 외에 다른 문자를 의미한다.\s
:[\t\r\n\v\f]
와 같으며 여러 공백 문자들을 의미한다.
주요 정규표현식
특정 단어로 시작하는지 검사
예시)
const url = 'https://example.com';
// 방법1
/^https?:\/\//.test(url); // true
// 방법2
/^(http|https):\/\//.test(url); // true
§ 방법 1
^
: 문자열의 시작http
: http가 포함되어 있는지 확인을 위한 패턴 추가s?
: http에 문자 s가 붙어있던, 붙어있지 않던 매치가 되도록 함\/
: 그냥/
을 사용했을 때 정규 표현식을 닫는 의미로 이해할 수 있기 때문에 앞에 기호의 표현인\
를 붙여줌
숫자로 이루어진 문자열인지 검사
예시)
const target = '12345';
/^\d+$/.test(target); // true
^
: 문자열의 시작\d+
:\d
는 숫자를 의미하고,+
는 이러한 숫자 패턴이 최소 한 번 이상 반복되는지$
: 문자열의 마지막
특수문자 포함 여부 검사
예시)
const target = 'abc#123';
(/[\{\}\[\]\/?.,;:!\)*~`!^\-_+<>@\#$%&\\\=\(\'\")]/gi).test(target);
괄호나 - 같은 기호들은 정규 표현식에 사용되어 혼란을 줄 수 있기 때문에 앞에 \
를 사용하여 구분할 수 있게 한다,
반응형