[JavaScript] 정규 표현식

jwp9633·2022년 7월 6일
0

JavaScript

목록 보기
10/28

정규 표현식(Regular expressions)

문자열에서 특정 문자의 조합을 찾는데 이용되는 패턴

  • RegExp 메서드의 exec()test()에 사용된다.
  • String 메서드의 match(), matchAll, replace(), replaceAll(), search(), split()에 사용된다.

정규 표현식 만들기

방법 1. 정규 표현식 리터럴

const re = /ab+c/;
  • 슬래시로 패턴을 감싸서 작성한다.
  • 정규 표현식 리터럴은 스크립트를 불러올 때 컴파일되므로, 변경될 일이 없는 패턴은 리터럴을 사용하면 성능이 향상될 수 있다.

방법 2. RegExp 객체의 생성자 호출

const re = new RegExp('ab+c');
  • 생성자 함수를 사용하면 정규 표현식이 런타임에 컴파일되므로, 변경될 수 있는 패턴이나 사용자 입력 등 외부 출처에서 가져오는 패턴에서 사용한다.

정규 표현식 패턴 작성하기

  • 정규 표현식 패턴은 슬래시로 감싸서 작성한다.

단순 패턴 사용하기

  • 직접적인 일치 탐색이 필요할 때 사용한다.
    /abc/는 문자열에서 정확한 순서로 'abc'라는 문자의 조합을 탐색할 때 사용한다.

특수 문자 사용하기

  • 직접적인 일치 이상의 탐색이 필요할 때 특수 문자를 사용한다.
    예를 들어, 하나의 'a'이후에 0개 이상의 'b', 그 뒤의 'c'와 일치해야 하면 /ab*c/ 패턴을 사용할 수 있다. 'b' 뒤의 *은 이전 항목의 0번 이상 반복을 의미한다.
  • 특수 문자의 의미와 사용 방법은 드림코딩 엘리 님의 정규 표현식 정리에서 확인할 수 있다.

이스케이핑

  • 특수 문자를 있는 그대로 탐색해야 하는 경우, 특수 문자 앞에 역슬래시()를 배치해서 이스케이프 해야 한다.
    예를 들어, "a" 뒤의 별표("*") 뒤의 "b"와 일치해야 하면 /a*b/를 사용하면 된다. 역슬래시가 "*"를 "이스케이프"해서, 특수 문자가 아닌 문자 리터럴로 취급합니다.

괄호

  • 정규 표현식의 아무 부분을 괄호로 감싸게 되면, 그 부분과ㅏ 일치하는 부분 문자열을 기억하게 된다.

플래그

  • 정규 표현식 패턴 뒤에 플래그를 사용하여 전역 탐색이나 대소문자 무시와 같은 특성을 지정할 수 있다.
  • 플래그는 단독으로 사용할 수 있고, 순서에 상관 없이 한꺼번에 여럿을 지정할 수 있다.
플래그설명
d부분 문자열 일치에 대해 인덱스 생성
g전역 탐색
i대소문자를 구분하지 않음
m여러 줄에 걸쳐 탐색
s개행 문자가 .과 일치함
u"unicode", 패턴을 유니코드 코드 포인트의 시퀀스로 간주함
y"접착" 탐색, 대상 문자열의 현재 위치에서 탐색을 시작함
const re = /pattern/flags;
const re = new RegExp('pattern', 'flags');

정규 표현식 테스트할 수 있는 사이트

참고문헌

profile
JUST DO IT.

0개의 댓글