?um/p1-90`String 构造器:
extends 子句的值。意图继承指定 String 行为的子类构造器必须super 调用,以创建并初始化具有 [[StringData]] 内部槽的子类实例。此函数在被调用时执行以下步骤:
String 构造器:
此函数可以用任意数量的实参调用,这些实参构成 rest 参数 codeUnits。
它在被调用时执行以下步骤:
此函数的
此函数可以用任意数量的实参调用,这些实参构成 rest 参数 codePoints。
它在被调用时执行以下步骤:
此函数的
String.prototype 的初始值是
此属性具有特性 { [[Writable]]:
此函数可以用可变数量的实参调用。第一个实参是 template,其余实参构成
它在被调用时执行以下步骤:
String 原型对象:
除非另有明确说明,下文定义的 String 原型对象的方法不是泛型的,并且传给它们的
此方法返回一个单元素 String,
如果 pos 是整数 Number,则 x.charAt(pos) 的结果等价于 x.substring(pos, pos + 1) 的结果。
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
此方法返回一个 Number(一个小于 216 的非负整数 Number),它是将此对象转换为 String 后所得 String 中索引 position 处码元的数值。如果该索引处没有元素,则结果为
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
调用此方法时,它返回一个 String 值,该值由
此方法在被调用时执行以下步骤:
此方法的
此方法有意设计为泛型的;它不要求其
String.prototype.constructor 的初始值是
此方法在被调用时执行以下步骤:
指定当第一个实参是 RegExp 时抛出异常,是为了允许未来版本定义允许这类实参值的扩展。
此方法有意设计为泛型的;它不要求其
此方法在被调用时执行以下步骤:
如果 searchString 作为将此对象转换为 String 的结果的
指定当第一个实参是 RegExp 时抛出异常,是为了允许未来版本定义允许这类实参值的扩展。
此方法有意设计为泛型的;它不要求其
如果 searchString 作为将此对象转换为 String 的结果的
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
此方法在被调用时执行以下步骤:
如果 searchString 作为将此对象转换为 String 的结果的
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
此方法返回一个非
在执行比较之前,此方法执行以下步骤以准备 Strings:
此方法的可选第二和第三参数的含义在 ECMA-402 规范中定义;不
实际返回值由实现定义,以允许在其中编码额外信息,但当此方法被视为两个实参的方法时,它必须是一个一致的比较器,定义所有 Strings 集合上的全序。此方法还必须识别并遵守 Unicode Standard 中的规范等价,包括在比较可区分但规范等价的 Strings 时返回
此方法本身不适合直接作为 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 string (a String), maxLength (a non-negative
实参 maxLength 会被夹住,使其不能小于 string 的长度。
实参 fillString 默认为
The abstract operation ToZeroPaddedDecimalString takes arguments n (a non-negative
此方法在被调用时执行以下步骤:
此方法创建由
此方法有意设计为泛型的;它不要求其
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
The abstract operation GetSubstitution takes arguments matched (a String), string (a String), position (a non-negative
此方法在被调用时执行以下步骤:
此方法在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
此方法返回将此对象转换为 String 后所得结果的一个
它在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
此方法返回一个 Array,其中存储了将此对象转换为 String 后所得结果的各个
它在被调用时执行以下步骤:
separator 的值可以是空 String。在这种情况下,separator 不匹配输入 String 开头或结尾处的空
如果
如果 separator 是
此方法有意设计为泛型的;它不要求其
此方法在被调用时执行以下步骤:
指定当第一个实参是 RegExp 时抛出异常,是为了允许未来版本定义允许这类实参值的扩展。
此方法有意设计为泛型的;它不要求其
此方法返回将此对象转换为 String 后所得结果的一个
如果任一实参是
如果 start 严格大于 end,则交换二者。
它在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
此方法将 String 值解释为 UTF-16 编码码点序列,如
它的工作方式与 toLowerCase 完全相同,只是它旨在产生与
此方法可选参数的含义在 ECMA-402 规范中定义;不
此方法有意设计为泛型的;它不要求其
此方法将 String 值解释为 UTF-16 编码码点序列,如
它的工作方式与 toUpperCase 完全相同,只是它旨在产生与
此方法可选参数的含义在 ECMA-402 规范中定义;不
此方法有意设计为泛型的;它不要求其
此方法将 String 值解释为 UTF-16 编码码点序列,如
它在被调用时执行以下步骤:
结果必须根据 Unicode Character Database 中的区域设置无关大小写映射派生(这明确不仅包括文件 UnicodeData.txt,还包括随附文件 SpecialCasing.txt 中所有区域设置无关的映射)。
某些码点的大小写映射可能产生多个码点。在这种情况下,结果 String 的长度可能与源 String 不同。由于 toUpperCase 和 toLowerCase 都具有上下文敏感行为,这两个方法并不对称。换句话说,s.toUpperCase().toLowerCase() 不一定等于 s.toLowerCase()。
此方法有意设计为泛型的;它不要求其
此方法在被调用时执行以下步骤:
对于 String 对象,此方法恰好返回与 valueOf 方法相同的内容。
此方法将 String 值解释为 UTF-16 编码码点序列,如
它的行为与 String.prototype.toLowerCase 完全相同,只是 String 使用 Unicode Default Case Conversion 的 toUppercase 算法进行映射。
此方法有意设计为泛型的;它不要求其
此方法返回此对象的 String 表示,其中所有不属于
它在被调用时执行以下步骤:
此方法将 String 值解释为 UTF-16 编码码点序列,如
它在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
The abstract operation TrimString takes arguments arg (an ECMAScript language value) and where (
空白的定义是
此方法将 String 值解释为 UTF-16 编码码点序列,如
它在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
此方法将 String 值解释为 UTF-16 编码码点序列,如
它在被调用时执行以下步骤:
此方法有意设计为泛型的;它不要求其
此方法在被调用时执行以下步骤:
The abstract operation ThisStringValue takes argument arg (an ECMAScript language value) and returns either a normal completion containing a String or a throw completion. It performs the following steps when called:
此方法返回一个迭代器对象,该对象迭代 String 值的码点,并将每个码点作为 String 值返回。
它在被调用时执行以下步骤:
此方法的
String 实例是 String 奇异对象,并具有为这类对象指定的内部方法。String 实例继承自
String 实例具有一个
此 String 对象所表示的 String 值中的元素数量。
一旦 String 对象被初始化,此属性就不再变化。它具有特性 { [[Writable]]:
String Iterator 是表示对某个特定 String 实例对象的某次特定迭代的对象。String Iterator 对象没有具名构造器。相反,String Iterator 对象通过调用 String 实例对象的某些方法创建。
%StringIteratorPrototype% 对象:
此属性具有特性 { [[Writable]]:
RegExp 对象
正则表达式的形式和功能以 Perl 5 编程语言中的正则表达式设施为模型。
RegExp 构造器会把以下文法应用于输入的 pattern String。如果该文法不能把该 String 解释为
对于每个 \u u u u \u
这里的前两行等价于 CharacterClass。
本节中的若干产生式在
本节在
PropertyValueAliases.txt 中列出的、由 PropertyValueAliases.txt 中列出的 General_Category (gc) 属性的 Unicode 属性值或属性值别名,也不是 The abstract operation CountLeftCapturingParensWithin takes argument parseNode (a ( 终结符匹配的任意 ( 模式字符。
本节在
It performs the following steps when called:
The abstract operation CountLeftCapturingParensBefore takes argument parseNode (a
本节在
It performs the following steps when called:
The abstract operation MightBothParticipate takes arguments x (a
The syntax-directed operation CapturingGroupNumber takes no arguments and returns a positive
本节在
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
本节在
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 模式会匹配被解释为由 16 位值序列组成的 String,这些 16 位值是 Basic Multilingual Plane 范围内的 Unicode 码点。Unicode 模式会匹配被解释为由使用 UTF-16 编码的 Unicode 码点组成的 String。在描述 BMP 模式行为的上下文中,“字符”指单个 16 位 Unicode BMP 码点。在描述 Unicode 模式行为的上下文中,“字符”指 UTF-16 编码的码点(
例如,考虑一个在源文本中表示为单个非 BMP 字符 U+1D11E(MUSICAL SYMBOL G CLEF)的模式。如果解释为 Unicode 模式,它将是一个由单个码点 U+1D11E 组成的单元素(字符)
模式作为 ECMAScript String 值传给 RegExp 构造器,其中非 BMP 字符以 UTF-16 编码。例如,单个字符 MUSICAL SYMBOL G CLEF 模式,表示为 String 值时,是一个长度为 2 的 String,其元素是码元 0xD834 和 0xDD1E。因此,将其处理为由两个模式字符组成的 BMP 模式时,不需要进一步转换该字符串。然而,将其处理为 Unicode 模式时,必须使用
实现实际上可以不执行这种到 UTF-16 或从 UTF-16 的转换,但本规范的语义要求模式匹配的结果必须如同执行了这种转换一样。
下列描述使用以下内部数据结构:
RegExp Record 是一种
它具有以下字段:
| 字段名 | 值 | 含义 |
|---|---|---|
| [[IgnoreCase]] | a Boolean | 指示 RegExp 的 flags 中是否出现 |
| [[Multiline]] | a Boolean | 指示 RegExp 的 flags 中是否出现 |
| [[DotAll]] | a Boolean | 指示 RegExp 的 flags 中是否出现 |
| [[Unicode]] | a Boolean | 指示 RegExp 的 flags 中是否出现 |
| [[UnicodeSets]] | a Boolean | 指示 RegExp 的 flags 中是否出现 |
| [[CapturingGroupsCount]] | a non-negative |
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:
| 正则表达式运算符分隔两个 alternatives。模式首先尝试匹配左侧 | 跳过的模式部分中的任何捕获括号都会产生
/a|ab/.exec("abc")
返回结果
/((a)|(ab))((c)|(bc))/.exec("abc")
返回数组
["abc", "a", "a", undefined, "bc", undefined, "bc"]
而不是
["abc", "ab", undefined, "ab", "c", "c", undefined]
尝试两个 alternatives 的顺序与 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
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]] 是
形式 (?= ) 指定零宽正向先行断言。为了使其成功,(?= 形式(这种不寻常行为继承自 Perl)。只有当
例如,
/(?=(a+))/.exec("baaabac")
匹配第一个 b 后紧接的空 String,因此返回数组:
["", "aaa"]
为说明不会回溯进入先行断言,请考虑:
/(?=(a+))a*b\1/.exec("baaabac")
此表达式返回
["aba", "a"]
而不是:
["aaaba", "a"]
形式 (?! ) 指定零宽负向先行断言。为了使其成功,
/(.*?)a(?!(a+)b\2c)\2(.*)/.exec("baaabaac")
会寻找一个 a,其后不紧跟某个正数 n 个 a、一个 b、另一个 n 个 a(由第一个 \2 指定)以及一个 c。第二个 \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:
形式为 ( ) 的括号既用于把 \ 后跟非零十进制数)、在替换 String 中被引用,或作为从正则表达式匹配 (?: )。
形式为 \ 后跟非零十进制数 n 的转义序列,会匹配第 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 为 char 提供 simple 或 common case folding 映射,则返回把该映射应用于 char 的结果。在 ß(U+00DF LATIN SMALL LETTER SHARP S)映射为 ss 或 SS。不过,它可能把 Basic Latin 块之外的码点映射到其中的码点——例如,ſ(U+017F LATIN SMALL LETTER LONG S)会 case-fold 为 s(U+0073 LATIN SMALL LETTER S),而 K(U+212A KELVIN SIGN)会 case-fold 为 k(U+006B LATIN SMALL LETTER K)。/[a-z]/ui 的正则表达式匹配。
在 Ω(U+2126 OHM SIGN)会被 toUppercase 映射为其自身,但会被 toCasefold 映射为 ω(U+03C9 GREEK SMALL LETTER OMEGA),同时 Ω(U+03A9 GREEK CAPITAL 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:
即使模式忽略大小写,范围两端的大小写对于确定哪些字符属于该范围也是重要的。因此,例如,模式 /[E-F]/i 只匹配字母 E、F、e 和 f,而模式 /[E-f]/i 会匹配 Unicode Basic Latin 块中的所有大写和小写字母,以及符号 [, \, ], ^, _ 和 `。
- 字符可以被按字面处理,也可以表示一个范围。如果它是
\b、\B 和反向引用除外。在 \b 表示退格字符,而 \B 和反向引用会引发错误。在
General_Category, s) 是 PropertyValueAliases.txt 中列出的 General_Category (gc) 属性的 Unicode 属性值或属性值别名,则结果通常会由两个或更多范围组成。当 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”的字符。 It performs the following steps when called:
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(属性别名)是有效的,但 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 (
PropertyValueAliases.txt 中列出的 Unicode 属性 p 的属性值或属性值别名。实现必须支持 PropertyValueAliases.txt 中针对
例如,Xpeo 和 Old_Persian 是有效的 Script_Extensions 值,但 xpeo 和 Old Persian 不是。
此算法不同于 UAX44 中列出的符号值匹配规则:大小写、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 constructor) and returns either a normal completion containing an Object or a throw completion. It performs the following steps when called:
The abstract operation RegExpInitialize takes arguments obj (an Object), pattern (an ECMAScript language value), and flags (an ECMAScript language value) and returns either a normal completion containing an Object or a throw completion. It performs the following steps when called:
The abstract operation ParsePattern takes arguments patternText (a sequence of Unicode code points), u (a Boolean), and v (a Boolean) and returns a
本节在
It performs the following steps when called:
RegExp 构造器:
extends 子句的值。意图继承指定 RegExp 行为的子类构造器必须super 调用,以创建并初始化具有必要内部槽的子类实例。此函数在被调用时执行以下步骤:
如果 pattern 使用
RegExp 构造器:
此函数返回 string 的副本,其中正则表达式
它在被调用时执行以下步骤:
\0 字符转义或诸如 \1 的 \c 之后的上下文也有同样作用。尽管名称相似,RegExp.escape 并不执行相似的操作。前者转义模式以便表示为字符串,而此函数转义字符串以便表示在模式内部。
The abstract operation EncodeForRegExpEscape takes argument codePoint (a code point) and returns a String. 它返回一个表示
RegExp.prototype 的初始值是
此属性具有特性 { [[Writable]]:
RegExp[%Symbol.species%] 是
此函数的
RegExp 原型方法通常使用其
RegExp 原型对象:
RegExp 原型对象自身没有
RegExp.prototype.constructor 的初始值是
此方法在 string 中搜索正则表达式模式的出现位置,并返回
它在被调用时执行以下步骤:
RegExp.prototype.dotAll 是
RegExp.prototype.flags 是
The abstract operation RegExpHasFlag takes arguments regexp (an ECMAScript language value) and codeUnit (a code unit) and returns either a normal completion containing either a Boolean or
RegExp.prototype.global 是
RegExp.prototype.hasIndices 是
RegExp.prototype.ignoreCase 是
此方法在被调用时执行以下步骤:
此方法的
此方法在被调用时执行以下步骤:
此方法的
RegExp.prototype.multiline 是
此方法在被调用时执行以下步骤:
此方法的
此方法在被调用时执行以下步骤:
此方法的
执行搜索时会忽略此 RegExp 对象的
RegExp.prototype.source 是
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 并不执行相似的操作。前者转义字符串以便表示在模式内部,而此函数转义模式以便表示为字符串。
此方法返回一个 Array,其中存储了将 string 转换为 String 后所得结果的各个
/a*?/[Symbol.split]("ab") 求值为数组 ["a", "b"],而 /a*/[Symbol.split]("ab") 求值为数组 ["","b"]。)
如果 string 是(或转换为)空 String,则结果取决于正则表达式是否能匹配空 String。如果可以,结果数组不
如果正则表达式
/<(\/)?([^<>]+)>/[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 是
此方法在被调用时执行以下步骤:
返回的 String 具有
RegExp.prototype.unicode 是
RegExp.prototype.unicodeSets 是
The abstract operation RegExpExec takes arguments regexp (an Object) and string (a String) and returns either a normal completion containing either an Object or
如果未找到可调用的
The abstract operation RegExpBuiltinExec takes arguments regexp (an initialized RegExp instance) and string (a String) and returns either a normal completion containing either an Array exotic object or
The abstract operation AdvanceStringIndex takes arguments string (a String), index (a non-negative
The abstract operation GetStringIndex takes arguments string (a String) and codePointIndex (a non-negative
Match Record 是一种
Match Record 具有
| 字段名 | 值 | 含义 |
|---|---|---|
| [[StartIndex]] | a non-negative |
从字符串开头起计数,匹配开始处( |
| [[EndIndex]] | an |
从字符串开头起计数,匹配结束处(不 |
The abstract operation GetMatchString takes arguments string (a String) and match (a
The abstract operation GetMatchIndexPair takes arguments string (a String) and match (a
The abstract operation MakeMatchIndicesIndexPairArray takes arguments string (a String), indices (a
RegExp 实例是
RegExp 实例还具有以下属性:
RegExp String Iterator 是表示对某个特定 String 实例对象进行特定迭代,并与某个特定 RegExp 实例对象匹配的对象。RegExp String Iterator 对象没有具名构造器。相反,RegExp String Iterator 对象通过调用 RegExp 实例对象的某些方法创建。
The abstract operation CreateRegExpStringIterator takes arguments regexp (an Object), string (a String), global (a Boolean), and fullUnicode (a Boolean) and returns an Object. It performs the following steps when called:
%RegExpStringIteratorPrototype% 对象:
此属性具有特性 { [[Writable]]:
| 内部槽 | 类型 | 描述 |
|---|---|---|
| [[IteratingRegExp]] | an Object | 用于迭代的正则表达式。 |
| [[IteratedString]] | a String | 正在迭代的 String 值。 |
| [[Global]] | a Boolean | 指示 [[IteratingRegExp]] 是否为全局。 |
| [[Unicode]] | a Boolean | 指示 [[IteratingRegExp]] 是否处于 Unicode 模式。 |
| [[Done]] | a Boolean | 指示迭代是否完成。 |