JavaScript

[JavaScript] 리터럴 정규식과 RegExp 객체

댕주 2024. 11. 16. 21:06

리터럴 정규식(/.../)

  • 정규식 리터럴은 고정된 정규식을 작성할 때 사용한다
  • 코드가 간결하며, 컴파일 단계에서 정규식을 바로 생성한다
const regex = /^\d+(\.\d{1,2})?%/;

 

new RegExp()

  • 문자열로 정규식을 생성하며, 런타임에 동적으로 정규식을 만들 때 유용하다
  • 문자열로 전달하기 때문에, 역슬래시( \ )를 두 번( \\ ) 사용해야 한다
const decimalPlaces = 2;
const regex = new RegExp(`^\\d+(\\.\\d{1,${decimalPlaces}})?$`);

특수 문자 처리

리터럴 정규식

  • 정규식의 특수 문자( \d, \w, \s 등)를 사용할 때, 이스케이프 처리가 간단하다

new RegExp()

  • 정규식 문자열을 전달하기 때문에, 역슬래시를 두 번 사용해야 정규식으로 인식된다
  • 예를 들어, \d 를 표현하려면 \\d 로 작성해야 한다
const regex = new RegExp('^\\d+(\\.\\d{1,2})?$');

성능

리터럴 정규식

  • 정규식 리터럴은 스크립트가 로드될 때 컴파일되므로 더 빠르다
  • 동일한 정규식을 반복적으로 사용해야할 경우 유리하다

new RegExp()

  • 런타임에 정규식을 생성하므로 약간의 성능 비용이 추가된다
  • 현대 브라우저에서 이 차이는 거의 무시할 수 있을 정도로 작다
특징 리터럴 정규식 ( /.../ ) new RegExp()
작성 방법 정규식 리터럴 사용 ( /.../ ) 문자열로 정규식 생성 ( new RegExp )
동적 생성 가능 여부 불가능 가능
특수 문자 처리 간단 ( \d, \w 등 그대로 사용) 역슬래시 두 번 사용해야 함 ( \\d )
성능 더 빠름 (컴파일 시 정규식 생성) 런타임에 정규식 생성으로 약간 느림
사용 예 고정된 정규식 동적 정규식 생성 필요 시

'JavaScript' 카테고리의 다른 글

[JavaScript] jQuery  (3) 2024.11.17
[JavaScript] 자료구조  (0) 2024.11.16
[JavaScript] 정규식  (0) 2024.11.16
[JavaScript] this  (2) 2024.11.10
[JavaScript] == (느슨한 비교) 와 === (엄격한 비교)  (0) 2024.11.09