?um/p1-90`String 생성자는:
extends 절의 값으로 사용될 수 있다. 지정된 String 동작을 상속하려는 서브클래스 생성자는 [[StringData]] 내부 슬롯을 가진 서브클래스 인스턴스를 생성하고 초기화하기 위해 String 생성자에 대한 super 호출을 포함해야 한다.이 함수는 호출될 때 다음 단계를 수행한다:
String 생성자는:
이 함수는 나머지 매개변수 codeUnits를 형성하는 임의 개수의 인자와 함께 호출될 수 있다.
이 함수는 호출될 때 다음 단계를 수행한다:
이 함수의
이 함수는 나머지 매개변수 codePoints를 형성하는 임의 개수의 인자와 함께 호출될 수 있다.
이 함수는 호출될 때 다음 단계를 수행한다:
이 함수의
String.prototype의 초기값은
이 속성은 { [[Writable]]:
이 함수는 가변 개수의 인자와 함께 호출될 수 있다. 첫 번째 인자는 template이고 나머지 인자들은
이 함수는 호출될 때 다음 단계를 수행한다:
이 함수는 Tagged Template(
String 프로토타입 객체는:
명시적으로 달리 언급되지 않는 한, 아래에 정의된 String 프로토타입 객체의 메서드는 제네릭이 아니며, 그 메서드에 전달되는
이 메서드는 이 객체를 String으로 변환한 결과인 String 값 안의 인덱스 pos에 있는 코드 단위를 포함하는 단일 요소 String을 반환한다. 그 인덱스에 요소가 없으면 결과는 빈 String이다. 결과는 String 객체가 아니라 String 값이다.
pos가 x.charAt(pos)의 결과는 x.substring(pos, pos + 1)의 결과와 동등하다.
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 의도적으로 제네릭이다; 이 메서드는 자신의
이 메서드는 이 객체를 String으로 변환한 결과인 String 안의 인덱스 pos에 있는 코드 단위의 수치 값인 Number(216보다 작은 음이 아닌
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 의도적으로 제네릭이다; 이 메서드는 자신의
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 의도적으로 제네릭이다; 이 메서드는 자신의
이 메서드가 호출되면,
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드의
이 메서드는 의도적으로 제네릭이다; 이 메서드는 자신의
String.prototype.constructor의 초기값은
이 메서드는 호출될 때 다음 단계를 수행한다:
첫 번째 인자가 RegExp이면 예외를 던지도록 지정된 것은 그러한 인자 값을 허용하는 확장을 미래 판에서 정의할 수 있게 하기 위한 것이다.
이 메서드는 의도적으로 제네릭이다; 이 메서드는 자신의
이 메서드는 호출될 때 다음 단계를 수행한다:
searchString이 이 객체를 String으로 변환한 결과의
첫 번째 인자가 RegExp이면 예외를 던지도록 지정된 것은 그러한 인자 값을 허용하는 확장을 미래 판에서 정의할 수 있게 하기 위한 것이다.
이 메서드는 의도적으로 제네릭이다; 이 메서드는 자신의
searchString이 이 객체를 String으로 변환한 결과의
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 의도적으로 제네릭이다; 이 메서드는 자신의
이 메서드는 호출될 때 다음 단계를 수행한다:
searchString이 이 객체를 String으로 변환한 결과의
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 의도적으로 제네릭이다; 이 메서드는 자신의
ECMA-402 국제화 API를 포함하는 ECMAScript 구현은 ECMA-402 명세에 지정된 대로 이 메서드를 구현해야 한다. ECMAScript 구현이 ECMA-402 API를 포함하지 않는 경우 이 메서드에 대한 다음 명세가 사용된다:
이 메서드는
비교를 수행하기 전에, 이 메서드는 String들을 준비하기 위해 다음 단계를 수행한다:
이 메서드의 선택적 두 번째 및 세 번째 매개변수의 의미는 ECMA-402 명세에 정의되어 있다; ECMA-402 지원을 포함하지 않는 구현은 그 매개변수 위치에 다른 어떤 해석도 부여해서는 안 된다.
실제 반환 값은 추가 정보를 인코딩할 수 있도록
후자는 두 인자의 함수를 요구하므로, 이 메서드 자체는 Array.prototype.sort에 대한 인자로 직접 적합하지 않다.
이 메서드는 ECMAScript 환경이
// Å ANGSTROM SIGN vs.
// Å LATIN CAPITAL LETTER A + COMBINING RING ABOVE
"\u212B".localeCompare("A\u030A")
// Ω OHM SIGN vs.
// Ω GREEK CAPITAL LETTER OMEGA
"\u2126".localeCompare("\u03A9")
// ṩ LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE vs.
// ṩ LATIN SMALL LETTER S + COMBINING DOT ABOVE + COMBINING DOT BELOW
"\u1E69".localeCompare("s\u0307\u0323")
// ḍ̇ LATIN SMALL LETTER D WITH DOT ABOVE + COMBINING DOT BELOW vs.
// ḍ̇ LATIN SMALL LETTER D WITH DOT BELOW + COMBINING DOT ABOVE
"\u1E0B\u0323".localeCompare("\u1E0D\u0307")
// 가 HANGUL CHOSEONG KIYEOK + HANGUL JUNGSEONG A vs.
// 가 HANGUL SYLLABLE GA
"\u1100\u1161".localeCompare("\uAC00")
정준 동등성의 정의와 논의는 Unicode Standard의 2장과 3장 및 Unicode Standard Annex #15, Unicode Normalization Forms와 Unicode Technical Note #5, Canonical Equivalence in Applications를 보라. 또한 Unicode Technical Standard #10, Unicode Collation Algorithm도 보라.
이 메서드는 Unicode Standard 3장 3.7절에 정의된 Unicode 호환 동등물 또는 호환 분해를 존중하지 않는 것이 권장된다.
이 메서드는 의도적으로 제네릭이다; 이 메서드는 자신의
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 의도적으로 제네릭이다; 이 메서드는 자신의
이 메서드는
이 메서드는 호출될 때 다음 단계를 수행한다:
String.prototype.split과 유사하게, String.prototype.matchAll은 일반적으로 입력을 변경하지 않고 동작하도록 설계되어 있다.이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 의도적으로 제네릭이다; 이 메서드는 자신의
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
The abstract operation StringPaddingBuiltinsImpl takes arguments thisValue (an ECMAScript language value), maxLength (an ECMAScript language value), fillString (an ECMAScript language value), and placement (
The abstract operation StringPad takes arguments str (a String), maxLength (a non-negative integer), fillString (a String), and placement (
인자 maxLength는 str의 길이보다 작을 수 없도록 클램프된다.
인자 fillString의 기본값은
The abstract operation ToZeroPaddedDecimalString takes arguments n (a non-negative integer) and minLength (a non-negative integer) and returns a String. It performs the following steps when called:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는
이 메서드는 의도적으로 제네릭이다; 이 메서드는 자신의
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 의도적으로 제네릭이다; 이 메서드는 자신의
The abstract operation GetSubstitution takes arguments matched (a String), str (a String), position (a non-negative integer), captures (a
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 의도적으로 제네릭이다; 이 메서드는 자신의
이 메서드는 이 객체를 String으로 변환한 결과의
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 의도적으로 제네릭이다; 이 메서드는 자신의
이 메서드는 이 객체를 String으로 변환한 결과의 부분 문자열들이 저장된 Array를 반환한다. 부분 문자열들은 separator의 출현을 왼쪽에서 오른쪽으로 검색하여 결정된다; 이러한 출현들은 반환된 배열 안의 어떤 String의 일부도 아니지만, String 값을 나누는 역할을 한다. separator의 값은 임의 길이의 String일 수도 있고, RegExp처럼
이 메서드는 호출될 때 다음 단계를 수행한다:
separator의 값은 빈 String일 수 있다. 이 경우 separator는 입력 String의 시작이나 끝에 있는 빈
separator가
이 메서드는 의도적으로 제네릭이다; 이 메서드는 자신의
이 메서드는 호출될 때 다음 단계를 수행한다:
첫 번째 인자가 RegExp이면 예외를 던지도록 지정된 것은 그러한 인자 값을 허용하는 확장을 미래 판에서 정의할 수 있게 하기 위한 것이다.
이 메서드는 의도적으로 제네릭이다; 이 메서드는 자신의
이 메서드는 이 객체를 String으로 변환한 결과의
어느 인자든
start가 end보다 엄격히 크면, 둘은 서로 바뀐다.
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 의도적으로 제네릭이다; 이 메서드는 자신의
ECMA-402 국제화 API를 포함하는 ECMAScript 구현은 ECMA-402 명세에 지정된 대로 이 메서드를 구현해야 한다. ECMAScript 구현이 ECMA-402 API를 포함하지 않는 경우 이 메서드에 대한 다음 명세가 사용된다:
이 메서드는
이 메서드는 toLowerCase와 정확히 동일하게 동작한다. 해당 언어의 규칙이 일반 Unicode 대소문자 매핑과 충돌하는 몇몇 경우(예: 터키어)에만 차이가 있다.
이 메서드의 선택적 매개변수의 의미는 ECMA-402 명세에 정의되어 있다; ECMA-402 지원을 포함하지 않는 구현은 그 매개변수 위치를 다른 어떤 용도로도 사용해서는 안 된다.
이 메서드는 의도적으로 제네릭이다; 이 메서드는 자신의
ECMA-402 국제화 API를 포함하는 ECMAScript 구현은 ECMA-402 명세에 지정된 대로 이 메서드를 구현해야 한다. ECMAScript 구현이 ECMA-402 API를 포함하지 않는 경우 이 메서드에 대한 다음 명세가 사용된다:
이 메서드는
이 메서드는 toUpperCase와 정확히 동일하게 동작한다. 해당 언어의 규칙이 일반 Unicode 대소문자 매핑과 충돌하는 몇몇 경우(예: 터키어)에만 차이가 있다.
이 메서드의 선택적 매개변수의 의미는 ECMA-402 명세에 정의되어 있다; ECMA-402 지원을 포함하지 않는 구현은 그 매개변수 위치를 다른 어떤 용도로도 사용해서는 안 된다.
이 메서드는 의도적으로 제네릭이다; 이 메서드는 자신의
이 메서드는
이 메서드는 호출될 때 다음 단계를 수행한다:
결과는 Unicode Character Database의 로캘 비민감 대소문자 매핑에 따라 도출되어야 한다(이는 UnicodeData.txt 파일뿐만 아니라 그와 함께 제공되는 SpecialCasing.txt 파일의 모든 로캘 비민감 매핑도 명시적으로 포함한다).
일부 코드 포인트의 대소문자 매핑은 여러 코드 포인트를 생성할 수 있다. 이 경우 결과 String은 원본 String과 같은 길이가 아닐 수 있다. toUpperCase와 toLowerCase 모두 문맥 민감 동작을 가지므로, 이 메서드들은 대칭적이지 않다. 다시 말해, s.toUpperCase().toLowerCase()는 반드시 s.toLowerCase()와 같지는 않다.
이 메서드는 의도적으로 제네릭이다; 이 메서드는 자신의
이 메서드는 호출될 때 다음 단계를 수행한다:
String 객체의 경우, 이 메서드는 우연히 valueOf 메서드와 같은 것을 반환한다.
이 메서드는
String이 Unicode Default Case Conversion의 toUppercase 알고리즘을 사용해 매핑된다는 점을 제외하면, 이 메서드는 String.prototype.toLowerCase와 정확히 같은 방식으로 동작한다.
이 메서드는 의도적으로 제네릭이다; 이 메서드는 자신의
이 메서드는 서로게이트 쌍의 일부가 아닌 모든 선행 서로게이트와 후행 서로게이트가 U+FFFD (REPLACEMENT CHARACTER)로 대체된 이 객체의 String 표현을 반환한다.
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 의도적으로 제네릭이다; 이 메서드는 자신의
The abstract operation TrimString takes arguments string (an ECMAScript language value) and where (
공백 문자의 정의는
이 메서드는
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 의도적으로 제네릭이다; 이 메서드는 자신의
이 메서드는
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 의도적으로 제네릭이다; 이 메서드는 자신의
이 메서드는 호출될 때 다음 단계를 수행한다:
The abstract operation ThisStringValue takes argument value (an ECMAScript language value) and returns either a
이 메서드는 String 값의 코드 포인트들을 반복하고 각 코드 포인트를 String 값으로 반환하는 반복자 객체를 반환한다.
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드의
String 인스턴스는 String 특수 객체이며 그러한 객체에 대해 지정된 내부 메서드를 가진다. String 인스턴스는
String 인스턴스는
이 String 객체가 나타내는 String 값의 요소 개수.
String 객체가 초기화되면, 이 속성은 변하지 않는다. 이 속성은 { [[Writable]]:
String Iterator는 특정 String 인스턴스 객체에 대한 특정 반복을 나타내는 객체이다. String Iterator 객체에는 이름 있는 생성자가 없다. 대신, String Iterator 객체는 String 인스턴스 객체의 특정 메서드를 호출하여 생성된다.
%StringIteratorPrototype% 객체는:
이 속성은 { [[Writable]]:
RegExp 객체는 정규 표현식과 관련 플래그를 포함한다.
정규 표현식의 형식과 기능은 Perl 5 프로그래밍 언어의 정규 표현식 기능을 모델로 한다.
RegExp 생성자는 입력 패턴 String에 다음 문법을 적용한다. 문법이 해당 String을
관련된 u \u \u u
여기서 처음 두 줄은 CharacterClass와 동등하다.
이 절의 여러 생성식에는
이 절은
PropertyValueAliases.txt에 나열된, PropertyValueAliases.txt에 나열된 General_Category (gc) 속성의 Unicode 속성 값 또는 속성 값 별칭도 아니고, The abstract operation CountLeftCapturingParensWithin takes argument node (a Parse Node) and returns a non-negative integer. 이 연산은 node 안의 왼쪽 캡처 괄호의 수를 반환한다. 왼쪽 캡처 괄호는 ( 터미널과 일치한 임의의 ( 패턴 문자이다.
이 절은
It performs the following steps when called:
The abstract operation CountLeftCapturingParensBefore takes argument node (a Parse Node) and returns a non-negative integer. 이 연산은 둘러싸는 패턴 안에서 node의 왼쪽에 나타나는
이 절은
It performs the following steps when called:
The abstract operation MightBothParticipate takes arguments x (a Parse Node) and y (a Parse Node) and returns a Boolean. It performs the following steps when called:
The syntax-directed operation CapturingGroupNumber takes no arguments and returns a positive integer.
이 절은
It is defined piecewise over the following productions:
“
The syntax-directed operation IsCharacterClass takes no arguments and returns a Boolean.
이 절은
It is defined piecewise over the following productions:
The syntax-directed operation CharacterValue takes no arguments and returns a non-negative integer.
이 절은
It is defined piecewise over the following productions:
| ControlEscape | 수치 값 | 코드 포인트 | Unicode 이름 | 기호 |
|---|---|---|---|---|
t
|
9 |
U+0009
|
CHARACTER TABULATION | <HT> |
n
|
10 |
U+000A
|
LINE FEED (LF) | <LF> |
v
|
11 |
U+000B
|
LINE TABULATION | <VT> |
f
|
12 |
U+000C
|
FORM FEED (FF) | <FF> |
r
|
13 |
U+000D
|
CARRIAGE RETURN (CR) | <CR> |
\0은 <NUL> 문자를 나타내며 뒤에 십진 숫자가 올 수 없다.
The syntax-directed operation MayContainStrings takes no arguments and returns a Boolean. It is defined piecewise over the following productions:
The abstract operation GroupSpecifiersThatMatch takes argument thisGroupName (a
The syntax-directed operation CapturingGroupName takes no arguments and returns a String. It is defined piecewise over the following productions:
The syntax-directed operation RegExpIdentifierCodePoints takes no arguments and returns a
The syntax-directed operation RegExpIdentifierCodePoint takes no arguments and returns a code point. It is defined piecewise over the following productions:
정규 표현식 패턴은 아래에 설명된 과정을 사용하여
u도 v도 포함하지 않으면 BMP 패턴이다. 그렇지 않으면 Unicode 패턴이다. BMP 패턴은 Basic Multilingual Plane 범위의 Unicode 코드 포인트인 16비트 값의 시퀀스로 구성된 것으로 해석되는 String에 대해 매치한다. Unicode 패턴은 UTF-16을 사용해 인코딩된 Unicode 코드 포인트들로 구성된 것으로 해석되는 String에 대해 매치한다. BMP 패턴의 동작을 설명하는 문맥에서 “character”는 단일 16비트 Unicode BMP 코드 포인트를 의미한다. Unicode 패턴의 동작을 설명하는 문맥에서 “character”는 UTF-16으로 인코딩된 코드 포인트(
예를 들어, 단일 비-BMP 문자 U+1D11E (MUSICAL SYMBOL G CLEF)로 소스 텍스트에 표현된 패턴을 생각해 보자. Unicode 패턴으로 해석되면, 이는 단일 코드 포인트 U+1D11E로 구성된 단일 요소(character)
패턴은 비-BMP 문자가 UTF-16으로 인코딩된 ECMAScript String 값으로 RegExp 생성자에 전달된다. 예를 들어, 단일 문자 MUSICAL SYMBOL G CLEF 패턴은 String 값으로 표현될 때 요소가 코드 단위 0xD834와 0xDD1E인 길이 2의 String이다. 따라서 두 패턴 문자로 구성된 BMP 패턴으로 처리하기 위해서는 문자열에 대한 추가 변환이 필요하지 않다. 그러나 Unicode 패턴으로 처리하기 위해서는
구현은 실제로 UTF-16으로 또는 UTF-16에서 이러한 변환을 수행하지 않을 수 있지만, 이 명세의 의미론은 패턴 매칭 결과가 그러한 변환이 수행된 것과 같을 것을 요구한다.
아래 설명은 다음 내부 데이터 구조를 사용한다:
RegExp Record는 컴파일 중, 그리고 가능하면 매칭 중 필요한 RegExp에 관한 정보를 저장하는 데 사용되는
다음 필드들을 가진다:
| 필드 이름 | 값 | 의미 |
|---|---|---|
| [[IgnoreCase]] | Boolean | RegExp의 플래그에 |
| [[Multiline]] | Boolean | RegExp의 플래그에 |
| [[DotAll]] | Boolean | RegExp의 플래그에 |
| [[Unicode]] | Boolean | RegExp의 플래그에 |
| [[UnicodeSets]] | Boolean | RegExp의 플래그에 |
| [[CapturingGroupsCount]] | 음이 아닌 |
RegExp 패턴 안의 |
The syntax-directed operation CompilePattern takes argument regexpRecord (a
Pattern은
The syntax-directed operation CompileSubpattern takes arguments regexpRecord (a
이 절은
It is defined piecewise over the following productions:
| 정규 표현식 연산자는 두 대안을 구분한다. 패턴은 먼저 왼쪽 |에 의해 건너뛴 패턴 부분 안의 캡처 괄호는 String 대신
/a|ab/.exec("abc")
는
/((a)|(ab))((c)|(bc))/.exec("abc")
는 배열
["abc", "a", "a", undefined, "bc", undefined, "bc"]
을 반환하고 다음을 반환하지 않는다
["abc", "ab", undefined, "ab", "c", "c", undefined]
두 대안이 시도되는 순서는 direction 값과 무관하다.
연속된
결과
The abstract operation RepeatMatcher takes arguments m (a
다음과 비교해 보라
/a[a-z]{2,4}/.exec("abcdefghi")
이는
/a[a-z]{2,4}?/.exec("abcdefghi")
이는
또한 다음을 생각해 보라
/(aa|aabaac|ba|b|c)*/.exec("aabaac")
이는 위의 선택 지점 순서에 따라 배열
["aaba", "ba"]
를 반환하고 다음 중 어느 것도 반환하지 않는다:
["aabaac", "aabaac"]
["aabaac", "c"]
위의 선택 지점 순서는 두 수(단항 표기법으로 표현됨)의 최대공약수를 계산하는 정규 표현식을 작성하는 데 사용될 수 있다. 다음 예는 10과 15의 gcd를 계산한다:
"aaaaaaaaaa,aaaaaaaaaaaaaaa".replace(/^(a+)\1*,\1+$/, "$1")
이는 단항 표기법의 gcd
RepeatMatcher의 단계
/(z)((a+)?(b+)?(c))*/.exec("zaacbbbcac")
에서 그 동작을 볼 수 있으며, 이는 배열
["zaacbbbcac", "z", "ac", "a", undefined, "c"]
를 반환하고 다음은 반환하지 않는다
["zaacbbbcac", "z", "ac", "a", "bbb", "c"]
왜냐하면 가장 바깥쪽 *의 각 반복이 수량화된
The abstract operation EmptyMatcher takes no arguments and returns a
The abstract operation MatchTwoAlternatives takes arguments m1 (a
The abstract operation MatchSequence takes arguments m1 (a
The syntax-directed operation CompileAssertion takes argument regexpRecord (a
이 절은
It is defined piecewise over the following productions:
y 플래그가 패턴과 함께 사용되더라도, ^는 항상 input의 시작에서만, 또는 (regexpRecord.[[Multiline]]이
형식 (?= )는 너비가 0인 양의 전방탐색을 지정한다. 성공하려면 (?= 형식 안으로의 백트래킹은 없다(이 특이한 동작은 Perl에서 상속되었다). 이는
예를 들어,
/(?=(a+))/.exec("baaabac")
는 첫 번째 b 바로 뒤의 빈 String과 매치하므로 배열을 반환한다:
["", "aaa"]
전방탐색 안으로 백트래킹이 없음을 설명하기 위해, 다음을 생각해 보라:
/(?=(a+))a*b\1/.exec("baaabac")
이 표현식은 다음을 반환한다
["aba", "a"]
그리고 다음은 반환하지 않는다:
["aaaba", "a"]
형식 (?! )는 너비가 0인 음의 전방탐색을 지정한다. 성공하려면
/(.*?)a(?!(a+)b\2c)\2(.*)/.exec("baaabaac")
는 어떤 양수 n개의 a, b, 또 다른 n개의 a(첫 번째 \2로 지정됨), 그리고 c가 바로 뒤따르지 않는 a를 찾는다. 두 번째 \2는 음의 전방탐색 밖에 있으므로
["baaabaac", "ba", undefined, "abaac"]
The abstract operation IsWordChar takes arguments regexpRecord (a
The syntax-directed operation CompileQuantifier takes no arguments and returns a
The syntax-directed operation CompileQuantifierPrefix takes no arguments and returns a
The syntax-directed operation CompileAtom takes arguments regexpRecord (a
이 절은
It is defined piecewise over the following productions:
형식 ( )의 괄호는 \ 뒤에 0이 아닌 십진수가 옴)에서 사용되거나, replace String에서 참조되거나, 정규 표현식 매칭 (?: )를 사용한다.
형식 \ 뒤에 0이 아닌 십진수 n이 오는 escape sequence는 nth 캡처 괄호 집합의 결과(
The abstract operation CharacterSetMatcher takes arguments regexpRecord (a
The abstract operation BackreferenceMatcher takes arguments regexpRecord (a
The abstract operation Canonicalize takes arguments regexpRecord (a
CaseFolding.txt가 ch에 대해 simple 또는 common case folding 매핑을 제공하면, 그 매핑을 ch에 적용한 결과를 반환한다.ß (U+00DF LATIN SMALL LETTER SHARP S)를 ss나 SS로 매핑하지 않는다. 그러나 Basic Latin 블록 밖의 코드 포인트를 그 안의 코드 포인트로 매핑할 수는 있다. 예를 들어, ſ (U+017F LATIN SMALL LETTER LONG S)는 s (U+0073 LATIN SMALL LETTER S)로 case-fold되고 K (U+212A KELVIN SIGN)는 k (U+006B LATIN SMALL LETTER K)로 case-fold된다. 이러한 코드 포인트를 포함하는 String들은 /[a-z]/ui와 같은 정규 표현식에 의해 매치된다.
Ω (U+2126 OHM SIGN)는 toUppercase에 의해 자기 자신으로 매핑되지만 toCasefold에 의해 Ω (U+03A9 GREEK CAPITAL LETTER OMEGA)와 함께 ω (U+03C9 GREEK SMALL LETTER OMEGA)로 매핑되므로, /[ω]/ui와 /[\u03A9]/ui에는 매치되지만 /[ω]/i나 /[\u03A9]/i에는 매치되지 않는다. 또한 Basic Latin 블록 밖의 어떤 코드 포인트도 그 안의 코드 포인트로 매핑되지 않으므로, /[a-z]/i에 매치되지 않는다.
The abstract operation UpdateModifiers takes arguments regexpRecord (a
The syntax-directed operation CompileCharacterClass takes argument regexpRecord (a
The syntax-directed operation CompileToCharSet takes argument regexpRecord (a
이 절은
It is defined piecewise over the following productions:
패턴이 대소문자를 무시하더라도, 범위의 두 끝의 대소문자는 어떤 character가 그 범위에 속하는지 결정하는 데 중요하다. 따라서 예를 들어, 패턴 /[E-F]/i는 문자 E, F, e, f에만 매치하는 반면, 패턴 /[E-f]/i는 Unicode Basic Latin 블록의 모든 대문자와 소문자뿐만 아니라 기호 [, \, ], ^, _, 및 `에도 매치한다.
- character는 리터럴로 취급될 수도 있고 범위를 나타낼 수도 있다.
- U+002D (HYPHEN-MINUS)를 포함하는 \b, \B, 및 역참조를 제외하고 정규 표현식의 나머지에서 허용되는 어떤 escape sequence든 사용할 수 있다. \b는 백스페이스 character를 의미하고, \B와 역참조는 오류를 일으킨다.
0, 1, 2, 3, 4, 5, 6, 7, 8, 및 9를 포함하는 열 요소 General_Category, s)가 PropertyValueAliases.txt에 나열된 General_Category (gc) 속성에 대한 Unicode property value 또는 property value alias이면,결과는 종종 둘 이상의 범위로 구성된다. UnicodeSets가
The abstract operation CharacterRange takes arguments charSet (a
The abstract operation HasEitherUnicodeFlag takes argument regexpRecord (a
The abstract operation WordCharacters takes argument regexpRecord (a \b, \B, \w, 및 \W의 목적상 "word characters"로 간주되는 character들을 포함하는
The abstract operation AllCharacters takes argument regexpRecord (a
The abstract operation MaybeSimpleCaseFolding takes arguments regexpRecord (a CaseFolding.txt에 있는 Simple Case Folding (
The abstract operation CharacterComplement takes arguments regexpRecord (a
The abstract operation UnicodeMatchProperty takes arguments regexpRecord (a
구현은
예를 들어, Script_Extensions(scx(property alias)는 유효하지만, script_extensions나 Scx는 유효하지 않다.
나열된 속성들은 UTS18 RL1.2가 요구하는 것의 상위 집합을 형성한다.
이 표들에 있는 항목들의 철자(대소문자 포함)는 Unicode Character Database의 파일 PropertyAliases.txt에서 사용되는 철자와 일치한다. 그 파일의 정확한 철자는 안정적으로 보장된다.
General_Category |
General_Category |
gc |
|
Script |
Script |
sc |
|
Script_Extensions |
Script_Extensions |
scx |
ASCII |
ASCII |
ASCII_Hex_Digit |
ASCII_Hex_Digit |
AHex |
|
Alphabetic |
Alphabetic |
Alpha |
|
Any |
Any |
Assigned |
Assigned |
Bidi_Control |
Bidi_Control |
Bidi_C |
|
Bidi_Mirrored |
Bidi_Mirrored |
Bidi_M |
|
Case_Ignorable |
Case_Ignorable |
CI |
|
Cased |
Cased |
Changes_When_Casefolded |
Changes_When_Casefolded |
CWCF |
|
Changes_When_Casemapped |
Changes_When_Casemapped |
CWCM |
|
Changes_When_Lowercased |
Changes_When_Lowercased |
CWL |
|
Changes_When_NFKC_Casefolded |
Changes_When_NFKC_Casefolded |
CWKCF |
|
Changes_When_Titlecased |
Changes_When_Titlecased |
CWT |
|
Changes_When_Uppercased |
Changes_When_Uppercased |
CWU |
|
Dash |
Dash |
Default_Ignorable_Code_Point |
Default_Ignorable_Code_Point |
DI |
|
Deprecated |
Deprecated |
Dep |
|
Diacritic |
Diacritic |
Dia |
|
Emoji |
Emoji |
Emoji_Component |
Emoji_Component |
EComp |
|
Emoji_Modifier |
Emoji_Modifier |
EMod |
|
Emoji_Modifier_Base |
Emoji_Modifier_Base |
EBase |
|
Emoji_Presentation |
Emoji_Presentation |
EPres |
|
Extended_Pictographic |
Extended_Pictographic |
ExtPict |
|
Extender |
Extender |
Ext |
|
Grapheme_Base |
Grapheme_Base |
Gr_Base |
|
Grapheme_Extend |
Grapheme_Extend |
Gr_Ext |
|
Hex_Digit |
Hex_Digit |
Hex |
|
IDS_Binary_Operator |
IDS_Binary_Operator |
IDSB |
|
IDS_Trinary_Operator |
IDS_Trinary_Operator |
IDST |
|
ID_Continue |
ID_Continue |
IDC |
|
ID_Start |
ID_Start |
IDS |
|
Ideographic |
Ideographic |
Ideo |
|
Join_Control |
Join_Control |
Join_C |
|
Logical_Order_Exception |
Logical_Order_Exception |
LOE |
|
Lowercase |
Lowercase |
Lower |
|
Math |
Math |
Noncharacter_Code_Point |
Noncharacter_Code_Point |
NChar |
|
Pattern_Syntax |
Pattern_Syntax |
Pat_Syn |
|
Pattern_White_Space |
Pattern_White_Space |
Pat_WS |
|
Quotation_Mark |
Quotation_Mark |
QMark |
|
Radical |
Radical |
Regional_Indicator |
Regional_Indicator |
RI |
|
Sentence_Terminal |
Sentence_Terminal |
STerm |
|
Soft_Dotted |
Soft_Dotted |
SD |
|
Terminal_Punctuation |
Terminal_Punctuation |
Term |
|
Unified_Ideograph |
Unified_Ideograph |
UIdeo |
|
Uppercase |
Uppercase |
Upper |
|
Variation_Selector |
Variation_Selector |
VS |
|
White_Space |
White_Space |
space |
|
XID_Continue |
XID_Continue |
XIDC |
|
XID_Start |
XID_Start |
XIDS |
Basic_Emoji |
Emoji_Keycap_Sequence |
RGI_Emoji_Modifier_Sequence |
RGI_Emoji_Flag_Sequence |
RGI_Emoji_Tag_Sequence |
RGI_Emoji_ZWJ_Sequence |
RGI_Emoji |
The abstract operation UnicodeMatchPropertyValue takes arguments p (ECMAScript source text) and v (ECMAScript source text) and returns a Unicode property value. It performs the following steps when called:
PropertyValueAliases.txt에 나열된 Unicode 속성 p에 대한 property value 또는 property value alias이다.구현은 PropertyValueAliases.txt에 나열된 Unicode 속성 값과 속성 값 별칭을 지원해야 한다. 상호 운용성을 보장하기 위해, 구현은 다른 어떤 속성 값이나 속성 값 별칭도 지원해서는 안 된다.
예를 들어, Xpeo와 Old_Persian은 유효한 Script_Extensions 값이지만, xpeo와 Old Persian은 유효하지 않다.
이 알고리즘은 UAX44에 나열된 symbolic values에 대한 매칭 규칙과 다르다: 대소문자, Is 접두사는 지원되지 않는다.
The syntax-directed operation CompileClassSetString takes argument regexpRecord (a
The abstract operation RegExpCreate takes arguments pattern (an ECMAScript language value) and flags (a String or
The abstract operation RegExpAlloc takes argument newTarget (a
The abstract operation RegExpInitialize takes arguments obj (an Object), pattern (an ECMAScript language value), and flags (an ECMAScript language value) and returns either a
The abstract operation ParsePattern takes arguments patternText (a sequence of Unicode code points), u (a Boolean), and v (a Boolean) and returns a Parse Node or a non-empty
이 절은
It performs the following steps when called:
RegExp 생성자는:
extends 절의 값으로 사용될 수 있다. 지정된 RegExp 동작을 상속하려는 서브클래스 생성자는 필요한 내부 슬롯을 가진 서브클래스 인스턴스를 생성하고 초기화하기 위해 RegExp 생성자에 대한 super 호출을 포함해야 한다.이 함수는 호출될 때 다음 단계를 수행한다:
pattern이
RegExp 생성자는:
이 함수는 정규 표현식
이 함수는 호출될 때 다음 단계를 수행한다:
\0 문자 escape 또는 \1과 같은 \c 뒤의 문맥에 대해 같은 일을 한다.이름이 비슷하지만, RegExp.escape는 비슷한 동작을 수행하지 않는다. 전자는 문자열로 표현하기 위해 패턴을 escape하는 반면, 이 함수는 패턴 안에서 표현하기 위해 문자열을 escape한다.
The abstract operation EncodeForRegExpEscape takes argument cp (a code point) and returns a String. 이 연산은 cp와 매치하기 위한
RegExp.prototype의 초기값은
이 속성은 { [[Writable]]:
RegExp[%Symbol.species%]는 set 접근자 함수가
이 함수의
RegExp 프로토타입 메서드는 보통 자신의
RegExp 프로토타입 객체는:
RegExp 프로토타입 객체는 자기 자신의
RegExp.prototype.constructor의 초기값은
이 메서드는 string에서 정규 표현식 패턴의 출현을 검색하고 매치 결과를 포함하는 Array를 반환하거나, string이 매치되지 않았으면
이 메서드는 호출될 때 다음 단계를 수행한다:
RegExp.prototype.dotAll은 set 접근자 함수가
RegExp.prototype.flags는 set 접근자 함수가
The abstract operation RegExpHasFlag takes arguments regexp (an ECMAScript language value) and codeUnit (a code unit) and returns either a
RegExp.prototype.global은 set 접근자 함수가
RegExp.prototype.hasIndices는 set 접근자 함수가
RegExp.prototype.ignoreCase는 set 접근자 함수가
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드의
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드의
RegExp.prototype.multiline은 set 접근자 함수가
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드의
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드의
검색을 수행할 때 이 RegExp 객체의
RegExp.prototype.source는 set 접근자 함수가
The abstract operation EscapeRegExpPattern takes arguments pattern (a String) and flags (a String) and returns a String. It performs the following steps when called:
/ 또는 임의의 ///는 이름이 비슷하지만, RegExp.escape와 EscapeRegExpPattern은 비슷한 동작을 수행하지 않는다. 전자는 패턴 안에서 표현하기 위해 문자열을 escape하는 반면, 이 함수는 문자열로 표현하기 위해 패턴을 escape한다.
이 메서드는 string을 String으로 변환한 결과의 부분 문자열들이 저장된 Array를 반환한다. 부분 문자열들은
/a*?/[Symbol.split]("ab")는 배열 ["a", "b"]로 평가되는 반면, /a*/[Symbol.split]("ab")는 배열 ["","b"]로 평가된다.)
string이 빈 String이거나 빈 String으로 변환되는 경우, 결과는 정규 표현식이 빈 String과 매치할 수 있는지에 따라 달라진다. 매치할 수 있으면 결과 배열은 요소를 포함하지 않는다. 그렇지 않으면 결과 배열은 빈 String인 하나의 요소를 포함한다.
정규 표현식이 캡처 괄호를 포함하면, separator가 매치될 때마다 캡처 괄호의 결과(
/<(\/)?([^<>]+)>/[Symbol.split]("A<B>bold</B>and<CODE>coded</CODE>")
는 배열로 평가된다
["A", undefined, "B", "bold", "/", "B", "and", undefined, "CODE", "coded", "/", "CODE", ""]
limit이
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드의
이 메서드는 이 RegExp 객체의
RegExp.prototype.sticky는 set 접근자 함수가
이 메서드는 호출될 때 다음 단계를 수행한다:
반환된 String은 이 객체와 같은 동작을 가진 또 다른 RegExp 객체로 평가되는
RegExp.prototype.unicode는 set 접근자 함수가
RegExp.prototype.unicodeSets는 set 접근자 함수가
The abstract operation RegExpExec takes arguments regexp (an Object) and str (a String) and returns either a
호출 가능한
The abstract operation RegExpBuiltinExec takes arguments regexp (an initialized RegExp instance) and str (a String) and returns either a
The abstract operation AdvanceStringIndex takes arguments str (a String), index (a non-negative integer), and unicode (a Boolean) and returns a non-negative integer. It performs the following steps when called:
The abstract operation GetStringIndex takes arguments str (a String) and codePointIndex (a non-negative integer) and returns a non-negative integer. 이 연산은
Match Record는 정규 표현식 매치 또는 캡처의 시작 및 끝 인덱스를 캡슐화하는 데 사용되는
Match Record는
| 필드 이름 | 값 | 의미 |
|---|---|---|
| [[StartIndex]] | 음이 아닌 |
매치가 시작되는(포함) 지점까지 문자열의 시작부터 센 코드 단위의 수. |
| [[EndIndex]] | 매치가 끝나는(제외) 지점까지 문자열의 시작부터 센 코드 단위의 수. |
The abstract operation GetMatchString takes arguments str (a String) and match (a
The abstract operation GetMatchIndexPair takes arguments str (a String) and match (a
The abstract operation MakeMatchIndicesIndexPairArray takes arguments str (a String), indices (a
RegExp 인스턴스는
ECMAScript 2015 이전에는 RegExp 인스턴스가 자기 자신의 데이터 속성 RegExp.prototype의 접근자 속성으로 지정된다.
RegExp 인스턴스는 또한 다음 속성을 가진다:
RegExp String Iterator는 어떤 특정 String 인스턴스 객체에 대한 특정 반복을, 어떤 특정 RegExp 인스턴스 객체에 대해 매치하면서 나타내는 객체이다. RegExp String Iterator 객체에는 이름 있는 생성자가 없다. 대신, RegExp String Iterator 객체는 RegExp 인스턴스 객체의 특정 메서드를 호출하여 생성된다.
The abstract operation CreateRegExpStringIterator takes arguments regexp (an Object), str (a String), global (a Boolean), and fullUnicode (a Boolean) and returns an Object. It performs the following steps when called:
%RegExpStringIteratorPrototype% 객체는:
이 속성은 { [[Writable]]:
| 내부 슬롯 | 타입 | 설명 |
|---|---|---|
| [[IteratingRegExp]] | Object | 반복에 사용되는 정규 표현식. |
| [[IteratedString]] | String | 반복 대상인 String 값. |
| [[Global]] | Boolean | [[IteratingRegExp]]가 전역인지 아닌지를 나타낸다. |
| [[Unicode]] | Boolean | [[IteratingRegExp]]가 Unicode 모드인지 아닌지를 나타낸다. |
| [[Done]] | Boolean | 반복이 완료되었는지 아닌지를 나타낸다. |