RegExp() constructor

RegExp 생성자는 패턴을 사용해 텍스트를 판별할 때 사용하는 정규 표현식 객체를 생성합니다.

정규 표현식에 대한 소개는 JavaScript 안내서의 정규 표현식 장을 참고하세요.

시도해보기

구문

리터럴, 생성자, 팩토리 표기법이 가능합니다.

/pattern/flags
new RegExp(pattern[, flags])
RegExp(pattern[, flags])

매개변수

pattern

정규 표현식을 나타내는 텍스트. ES5부터는, 생성자 표기법에 한정하여 다른 RegExp 객체 혹은 리터럴을 사용할 수 있습니다. 패턴은 특수 문자를 포함할 수 있어서 일반적인 문자열 리터럴보다 더 넓은 범위의 값을 판별할 수 있습니다.

flags

정규 표현식에 추가할 플래그. 정규 표현식 객체를 패턴으로 제공한 경우 flags 문자열은 제공한 객체의 플래그를 모두 대체하며 lastIndex0으로 초기화합니다. (ES2015 이후) flags를 지정하지 않았으면서 정규 표현식 객체를 제공한 경우, 해당 객체의 플래그와 lastIndex를 복제합니다. flags는 다음 문자를 조합하여 지정할 수 있습니다.

g (global, 전역 판별)

처음 일치에서 중단하지 않고, 문자열 전체를 판별합니다.

i (ignore case, 대소문자 무시)

u 플래그까지 활성화된 경우, Unicode 대소문자 폴딩을 사용합니다.

m (multiline, 여러 줄)

시작과 끝 문자(^$)가 여러 줄에 걸쳐 동작합니다. 즉, 전체 입력 문자열의 맨 처음과 맨 끝 뿐만 아니라 (\n이나 \r로 구분되는) 각각의 줄의 처음과 끝도 일치합니다.

s ("dotAll")

.이 줄 바꿈에도 일치합니다.

u (unicode)

pattern을 Unicode 코드 포인트 시퀀스로 처리합니다. (이진 문자열 참고)

y (sticky, 접착)

이 정규 표현식의 lastIndex 속성에 명시된 인덱스에서만 판별하고, 이전/이후 인덱스에서 판별을 시도하지 않습니다.

예제

리터럴 표기법과 생성자

RegExp 객체는 리터럴 표기법과 생성자로써 생성할 수 있습니다.

  • 리터럴 표기법의 매개변수는 두 빗금으로 감싸야 하며 따옴표를 사용하지 않습니다.
  • 생성자 함수의 매개변수는 빗금으로 감싸지 않으나 따옴표를 사용합니다.

다음의 세 표현식은 모두 같은 정규 표현식을 생성합니다.

js
/ab+c/i;
new RegExp(/ab+c/, "i"); // 리터럴
new RegExp("ab+c", "i"); // 생성자

리터럴 표기법은 표현식을 평가할 때 정규 표현식을 컴파일합니다. 정규 표현식이 변하지 않으면 리터럴 표기법을 사용하세요. 예를 들어, 반복문 안에서 사용할 정규 표현식을 리터럴 표기법으로 생성하면 정규 표현식을 매번 다시 컴파일하지 않습니다.

정규 표현식 객체의 생성자(new RegExp('ab+c'))를 사용하면 정규 표현식이 런타임에 컴파일됩니다. 패턴이 변할 가능성이 있거나, 사용자 입력과 같이 알 수 없는 외부 소스에서 가져오는 정규 표현식의 경우 생성자 함수를 사용하세요.

명세

Specification
ECMAScript Language Specification
# sec-regexp-constructor

브라우저 호환성

BCD tables only load in the browser

같이 보기