[JavaScript] 정규표현식(RegExp)
정규표현식
정규표현식은 일정한 규칙을 가진 문자열의 집합을 표현하기 위해 사용하는 형식 언어이다. 정규 표현식은 패턴과 플래그로 구성된다. 패턴은 일정한 규칙을 표현하기 위해, 플래그는 검색 방식을 설정하기 위해 사용한다.
아래는 대표적인 플래그 예시이다
i
: 대소문자를 구별하지 않고 패턴 검색g
: 대상 문자열 내에서 패턴과 일치하는 모든 문자열을 전역 검색
정규표현식 생성 방법
정규표현식 객체(RegExp
)를 생성하기 위해서는 정규표현식 리터럴과 RegExp
생성자 함수를 사용할 수 있다. 일반적으로는 리터럴을 사용하여 생성한다.
정규표현식은 주석이나 공백을 허용하지 않고 여러 가지 기호를 혼합하여 사용하기 때문에 가독성은 좋지 않다. 나의 경우에는 React로 검색창 UI를 구현할때 사용했다. 아래는 내 코드의 예시이다.
const setSearchIncludeData = (str) => {
let resultData = allData.filter((item) => {
let regex = new RegExp(str, "gi");
let titleBln = regex.test(item.title);
let badgeBln = false;
item.keywords.forEach((keyword) => {
if (regex.test(keyword)) {
badgeBln = true;
return;
}
});
return (titleBln || badgeBln) && item;
});
return resultData;
};
regex
로 새로운 정규표현식 객체를 생성하였고 플러그 g
와 i
를 사용하여 대소문자를 구분하지 않고 itme.title
데이터와 일치하는 모든 문자열 전역 검색을 하도록 작성하였다. 즉 사용자가 input
텍스트 창에 입력한 검색어와 일치하는 데이터가 있는지 검사하는 정규표현식이다.
이렇듯 정규표현식은 문자열을 대상으로 패턴 매칭 기능을 제공하고 특정 패턴과 일치하는 문자열을 검색하거나 추출 또는 치환할 수 있게 하는 기능이다.
정규표현식을 사용하면 반복문이나 조건문 없이 패턴을 정의하고 테스트하는 것으로 간단히 체크할 수 있어 용이하다.