?
u
m
/
p
1-9
0
`
String
extends
子句的值。打算继承指定 String 行为的子类super
调用,以使用 [[StringData]] 内部槽创建并初始化子类实例。调用该函数时执行以下步骤:
String
此函数可用任意数量的参数调用,这些参数组成剩余参数 codeUnits。
调用时执行以下步骤:
该函数的
此函数可用任意数量的参数调用,这些参数组成剩余参数 codePoints。
调用时执行以下步骤:
该函数的
String.prototype
的初始值是
该属性具有 { [[Writable]]:
此函数可用可变数量参数调用。第一个参数为 template,其余参数构成列表 substitutions。
调用时执行以下步骤:
此函数旨在作为标记模板(
String 原型对象:
除非另有明确说明,下面定义的 String 原型对象的方法不是泛型的,传入的
该方法返回一个包含在将此对象转换为 String 后所得字符串中索引 pos 处代码单元的单元素字符串。如果该索引处无元素,则结果为空字符串。结果是 String 值,而非 String 对象。
如果 pos
是整数数值,则 x.charAt(pos)
的结果等价于 x.substring(pos, pos + 1)
的结果。
调用该方法时执行以下步骤:
该方法特意设计为泛型;其
该方法返回一个 Number(非负整数且小于 216),表示在将此对象转换为 String 后得到的字符串中索引 pos 处代码单元的数值。如果该索引处无元素,结果为
调用该方法时执行以下步骤:
该方法特意设计为泛型;其
调用该方法时执行以下步骤:
该方法特意设计为泛型;其
调用此方法时,它返回一个由
调用该方法时执行以下步骤:
该方法的
该方法特意设计为泛型;其
String.prototype.constructor
的初始值是
调用该方法时执行以下步骤:
若 searchString(转为 String) 的代码单元序列与该对象(转为 String)在 endPosition - length(this) 处开始的对应代码单元相同,则此方法返回
当第一个参数是 RegExp 时抛出异常是为了允许未来版本定义允许此类参数值的扩展。
该方法特意设计为泛型;其
调用该方法时执行以下步骤:
如果 searchString 作为
当第一个参数是 RegExp 时抛出异常是为了允许未来版本定义允许此类参数值的扩展。
该方法特意设计为泛型;其
如果 searchString 作为
调用该方法时执行以下步骤:
该方法特意设计为泛型;其
调用该方法时执行以下步骤:
如果 searchString 作为
调用该方法时执行以下步骤:
该方法特意设计为泛型;其
包含 ECMA-402 国际化 API 的 ECMAScript 实现必须按 ECMA-402 的规范实现此方法。若不包含,则使用下述规范:
此方法返回一个非
在执行比较前,此方法进行以下准备步骤:
第二与第三可选参数的含义在 ECMA-402 规范中定义;不包含 ECMA-402 支持的实现不得为这些参数位置赋予其他含义。
实际返回值是实现定义的,以允许编码附加信息;但是当该方法视作二元比较器使用时,必须定义所有字符串集合上的一个总排序。该方法还必须识别并遵循 Unicode 标准中的规范等价(canonical equivalence),包括在比较可区分但规范等价的字符串时返回
该方法本身不适合作为 Array.prototype.sort
的参数,因为后者需要一个二元函数。
该方法可依赖
// Å 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 标准第 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 标准第 3 章第 3.7 节中定义的兼容等价或兼容分解。
该方法特意设计为泛型;其
调用该方法时执行以下步骤:
该方法特意设计为泛型;其
该方法对表示
调用时执行以下步骤:
String.prototype.split
相似,String.prototype.matchAll
被设计为通常不修改其输入。调用该方法时执行以下步骤:
该方法特意设计为泛型;其
调用该方法时执行以下步骤:
调用该方法时执行以下步骤:
The abstract operation StringPaddingBuiltinsImpl takes arguments O (一个
The abstract operation StringPad takes arguments S (一个字符串), maxLength (非负整数), fillString (一个字符串), and placement (
参数 maxLength 会被钳制,使其不小于 S 的长度。
参数 fillString 的默认值为
The abstract operation ToZeroPaddedDecimalString takes arguments n (非负整数) and minLength (非负整数) and returns 一个字符串. It performs the following steps when called:
调用该方法时执行以下步骤:
此方法创建一个字符串值,其内容为
该方法特意设计为泛型;其
调用该方法时执行以下步骤:
该方法特意设计为泛型;其
The abstract operation GetSubstitution takes arguments matched (字符串), str (字符串), position (非负整数), captures (由字符串或
调用该方法时执行以下步骤:
调用该方法时执行以下步骤:
该方法特意设计为泛型;其
该方法返回将此对象转换为字符串后的
调用时执行以下步骤:
该方法特意设计为泛型;其
该方法返回一个数组,其中存放了将此对象转换为字符串后的子串。子串通过自左向右查找 separator 的出现确定;这些出现本身不包含在结果数组的任一字符串中,而是用来分割字符串值。separator 的值可以是任意长度的字符串,也可以是一个对象(如具有
调用时执行以下步骤:
separator 的值可以为空字符串。在此情况下,separator 不匹配输入字符串开始或末尾的空
如果
若 separator 为
该方法特意设计为泛型;其
调用该方法时执行以下步骤:
若 searchString(转换为 String)的代码单元序列与该对象(转换为 String)从索引 position 开始的对应代码单元相同,则该方法返回
当第一个参数是 RegExp 时抛出异常是为了允许未来版本扩展允许此类参数值。
该方法特意设计为泛型;其
该方法返回将此对象转换为字符串后,从索引 start 开始到(但不包含)索引 end(或 end 为
若任一参数为
若 start 严格大于 end,则交换它们。
调用时执行以下步骤:
该方法特意设计为泛型;其
包含 ECMA-402 国际化 API 的 ECMAScript 实现必须按 ECMA-402 规范实现此方法。若不包含,则使用以下规范:
此方法将一个字符串值视为 UTF-16 编码代码点序列,参见
其行为与 toLowerCase
相同,但意在生成与
该方法可选参数的含义在 ECMA-402 中定义;未包含 ECMA-402 支持的实现不得对这些参数位置赋予其他含义。
该方法特意设计为泛型;其
包含 ECMA-402 国际化 API 的 ECMAScript 实现必须按 ECMA-402 规范实现此方法。若不包含,则使用以下规范:
此方法将字符串值视为 UTF-16 编码代码点序列(参见
其行为与 toUpperCase
相同,但意在生成与
该方法可选参数含义由 ECMA-402 规范定义;未包含 ECMA-402 支持的实现不得赋予其他含义。
该方法特意设计为泛型;其
此方法将字符串值视为 UTF-16 编码代码点序列(参见
调用时执行以下步骤:
结果必须依据 Unicode 字符数据库中的与区域无关的大小写映射获得(明确包括 UnicodeData.txt
文件以及伴随的 SpecialCasing.txt
中所有与区域无关的映射)。
某些代码点的大小写映射会产生多个代码点。在此情况下结果字符串长度可能不同于源字符串。由于 toUpperCase
与 toLowerCase
均具有上下文相关行为,这两个方法并不对称;即 s.toUpperCase().toLowerCase()
不一定等于 s.toLowerCase()
。
该方法特意设计为泛型;其
调用该方法时执行以下步骤:
对于 String 对象,该方法恰好与 valueOf
方法返回相同的值。
此方法将字符串值视为 UTF-16 编码代码点序列(参见
其行为与 String.prototype.toLowerCase
相同,只是字符串使用 Unicode 默认大小写转换中的 toUppercase 算法映射。
该方法特意设计为泛型;其
该方法返回此对象的字符串表示,其中所有不成对的前导或
调用时执行以下步骤:
该方法将字符串值视为 UTF-16 编码代码点序列(参见
调用时执行以下步骤:
该方法特意设计为泛型;其
The abstract operation TrimString takes arguments string (一个
空白的定义为
该方法将字符串值视为 UTF-16 编码代码点序列(参见
调用时执行以下步骤:
该方法特意设计为泛型;其
该方法将字符串值视为 UTF-16 编码代码点序列(参见
调用时执行以下步骤:
该方法特意设计为泛型;其
调用该方法时执行以下步骤:
The abstract operation ThisStringValue takes argument value (一个
该方法返回一个迭代器对象,该对象按字符串值的代码点进行迭代,并将每个代码点作为字符串值返回。
调用时执行以下步骤:
该方法的
String 实例是 String 特异对象,并具有为此类对象指定的内部方法。String 实例从
String 实例有一个
该 String 对象表示的字符串值中的元素数量。
一旦 String 对象初始化,该属性不再变化。其属性为 { [[Writable]]:
String Iterator 是表示某个特定 String 实例对象上的一次特定迭代的对象。String Iterator 对象没有命名
%StringIteratorPrototype% 对象:
该属性具有 { [[Writable]]:
RegExp 对象包含一个正则表达式以及其相关的标志(flags)。
正则表达式的形式和功能参考 Perl 5 编程语言中的正则表达式机制。
RegExp
对于每个 \u
u
\u
u
此处前两行等价于 CharacterClass。
本节中的若干产生式在
本节在
PropertyValueAliases.txt
中针对该 PropertyValueAliases.txt
中 General_Category (gc) 属性的属性值或其别名,也不是 The abstract operation (
终结符匹配的任意 (
模式字符。
本节在
It performs the following steps when called:
The abstract operation
本节在
It performs the following steps when called:
The abstract operation
The syntax-directed operation
本节在
It is defined piecewise over the following productions:
“
The syntax-directed operation
本节在
It is defined piecewise over the following productions:
The syntax-directed operation
本节在
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
The abstract operation
The syntax-directed operation
The syntax-directed operation
The syntax-directed operation
正则表达式模式通过下述过程被转换为一个抽象闭包(
一个 u
且不包含 v
时是一个 BMP 模式;否则是一个 Unicode 模式。BMP 模式针对被解释为由一系列 16 位值组成的字符串进行匹配,这些 16 位值是在基本多文种平面范围内的 Unicode 代码点。Unicode 模式针对被解释为由 UTF-16 编码的 Unicode 代码点组成的字符串进行匹配。在描述 BMP 模式行为的语境中,“character(字符)”指单个 16 位 Unicode BMP 代码点;在描述 Unicode 模式行为的语境中,“character” 指一个 UTF-16 编码的代码点(
例如,考虑一个在源文本中表示为单个非 BMP 字符 U+1D11E(MUSICAL SYMBOL G CLEF)的模式。作为 Unicode 模式解释时,它将是一个只含该代码点 U+1D11E 的单元素(字符)列表。然而,作为 BMP 模式解释时,它首先被 UTF-16 编码,产生一个包含代码单元 0xD834 和 0xDD1E 的双元素列表。
模式以 ECMAScript 字符串值的形式传给 RegExp
实现也许实际上不会执行这些到 UTF-16 之间的转换,但本规范语义要求匹配结果等效于执行了这些转换。
下述描述使用以下内部数据结构:
RegExp 记录 是一个记录值,用于存储编译(并可能在匹配)过程中需要的 RegExp 信息。
其具有以下字段:
The syntax-directed operation
一个 Pattern 编译成抽象闭包值。随后
The syntax-directed operation
本节在
It is defined piecewise over the following productions:
|
运算符分隔两个候选。模式先尝试匹配左侧 |
跳过的部分中的捕获括号产生
/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-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 一个
The abstract operation MatchTwoAlternatives takes arguments m1 (一个
The abstract operation MatchSequence takes arguments m1 (一个
The syntax-directed operation
本节在
It is defined piecewise over the following productions:
即使使用 y
标志,^
也只匹配 Input 的开始,或(若 rer.[[Multiline]] 为
(?=
)
是零宽正向先行断言。其成功要求 (?=
形式进行回溯(此异常行为源自 Perl)。仅当
例如:
/(?=(a+))/.exec("baaabac")
在首个 b
之后的空字符串处匹配,返回:
["", "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 rer (一个
The syntax-directed operation
The syntax-directed operation
The syntax-directed operation
本节在
It is defined piecewise over the following productions:
(
)
形式的括号既分组 \
加非零十进制数)、替换字符串引用,或作为正则匹配抽象闭包返回数组的一部分。若要禁止捕获行为,使用 (?:
)
。
\
后随非零十进制数字 n 的转义序列匹配第 n 组捕获括号的结果(
The abstract operation CharacterSetMatcher takes arguments rer (一个
The abstract operation BackreferenceMatcher takes arguments rer (一个
The abstract operation Canonicalize takes arguments rer (一个
CaseFolding.txt
为 ch 提供简单或常用大小写折叠映射,则返回应用该映射后的 ch。在 ß
映射到 ss
/SS
。但可将非 Basic Latin 代码点映射到该块内,如 ſ
折叠到 s
,K
折叠到 k
。包含这些代码点的字符串可被 /[a-z]/ui
匹配。
在 Ω
被 toUppercase 映射为自身,但 toCasefold 映射为 ω
,与 Ω
一起;因此 /[ω]/ui
与 /[\u03A9]/ui
匹配,却不被 /[ω]/i
或 /[\u03A9]/i
匹配。且无 Basic Latin 外代码点映射进该块,所以 /[a-z]/i
匹配。
The abstract operation UpdateModifiers takes arguments rer (一个
The syntax-directed operation
The syntax-directed operation
本节在
It is defined piecewise over the following productions:
即便模式忽略大小写,范围两端大小写仍影响范围所含字符。例如 /[E-F]/i
只匹配 E
、F
、e
、f
,而 /[E-f]/i
匹配 Basic Latin 中所有大小写字母以及符号 [
, \
, ]
, ^
, _
, `
。
-
可字面或作范围界定符。位于
-
U+002D 的 \b
、\B
、反向引用外的其他正则转义。在 \b
表示退格,\B
与反向引用报错;在
0
..9
的十元素 General_Category
, s) 为 General_Category 属性的属性值或别名(见 PropertyValueAliases.txt
),则结果通常由多段范围组成。当 UnicodeSets 与 IgnoreCase 同为
The abstract operation CharacterRange takes arguments A (一个
The abstract operation HasEitherUnicodeFlag takes argument rer (一个
The abstract operation WordCharacters takes argument rer (一个 \b
、\B
、\w
、\W
之“单词字符”的
The abstract operation AllCharacters takes argument rer (一个
The abstract operation MaybeSimpleCaseFolding takes arguments rer (一个
The abstract operation CharacterComplement takes arguments rer (一个
The abstract operation UnicodeMatchProperty takes arguments rer (一个
实现必须支持
例如,Script_Extensions
与 scx
有效,但 script_extensions
或 Scx
无效。
列出属性集合为 UTS18 RL1.2 要求的超集。
表中条目拼写(含大小写)与 Unicode 字符数据库 PropertyAliases.txt
保持一致,并遵守其稳定性保证。
Property name and aliases | Canonical property name |
---|---|
General_Category |
General_Category |
gc |
|
Script |
Script |
sc |
|
Script_Extensions |
Script_Extensions |
scx |
Property name and aliases | Canonical property name |
---|---|
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 |
Property name |
---|
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 源文本) and v (ECMAScript 源文本) and returns 一个 Unicode 属性值. It performs the following steps when called:
PropertyValueAliases.txt
中属性 p 的属性值或别名。实现必须支持 PropertyValueAliases.txt
中针对
例如,Xpeo
与 Old_Persian
是有效的 Script_Extensions
值,而 xpeo
与 Old Persian
无效。
该算法不同于 UAX44 中符号值匹配规则:不会忽略大小写、空白、U+002D、U+005F,也不支持 Is
前缀。
The syntax-directed operation
The abstract operation RegExpCreate takes arguments P (一个
The abstract operation RegExpAlloc takes argument newTarget (一个
The abstract operation RegExpInitialize takes arguments obj (一个对象), pattern (一个
The abstract operation
本节在
It performs the following steps when called:
RegExp
extends
子句的值。打算继承指定 RegExp 行为的子类super
调用,以创建并初始化带有所需内部槽的子类实例。调用该函数时执行以下步骤:
如果以
RegExp
该函数返回 S 的一个拷贝,其中在正则表达式
调用时执行以下步骤:
\0
字符转义或 \1
)之后使用并仍匹配 S,而不是被解释为前一转义序列的延伸。转义前导 ASCII 字母在 \c
后的情境中亦如此。尽管名字相似,RegExp.escape
所做的事情并不相同。前者转义一个模式以便作为字符串表示,而此函数转义一个字符串以便在模式内部表示。
The abstract operation EncodeForRegExpEscape takes argument cp (一个代码点) and returns 一个字符串. 返回一个用于匹配 cp 的
RegExp.prototype
的初始值是
该属性具有 { [[Writable]]:
RegExp[%Symbol.species%]
是一个存取器属性,其 set 访问器函数为
此函数的
RegExp 原型方法通常使用其
RegExp 原型对象:
RegExp 原型对象自身没有
RegExp.prototype.constructor
的初始值是
该方法在 string 中搜索一次正则表达式模式的出现,并返回包含匹配结果的数组;若 string 未匹配则返回
调用时执行以下步骤:
RegExp.prototype.dotAll
是一个存取器属性,其 set 访问器函数为
RegExp.prototype.flags
是一个存取器属性,其 set 访问器函数为
The abstract operation RegExpHasFlag takes arguments R (一个
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 P (一个字符串) and F (一个字符串) and returns 一个字符串. It performs the following steps when called:
/
或任何 ///
后随 F 会被解析为 尽管名字相似,RegExp.escape
与 EscapeRegExpPattern 所做事情不同。前者转义一个字符串以用于模式内部,后者转义一个模式以作为字符串表示。
该方法返回一个数组,数组中存放将 string 转为字符串结果的各子串。子串通过自左向右搜索
/a*?/[Symbol.split]("ab")
结果为 ["a", "b"]
,而 /a*/[Symbol.split]("ab")
结果为 ["","b"]
。)
如果 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 访问器函数为
调用该方法时执行以下步骤:
返回的字符串形式为
RegExp.prototype.unicode
是一个存取器属性,其 set 访问器函数为
RegExp.prototype.unicodeSets
是一个存取器属性,其 set 访问器函数为
The abstract operation RegExpExec takes arguments R (一个对象) and S (一个字符串) and returns 包含对象或
如果未找到可调用的
The abstract operation RegExpBuiltinExec takes arguments R (一个已初始化的 RegExp 实例) and S (一个字符串) and returns 包含
The abstract operation AdvanceStringIndex takes arguments S (一个字符串), index (一个非负整数), and unicode (一个布尔值) and returns 一个整数. It performs the following steps when called:
The abstract operation GetStringIndex takes arguments S (一个字符串) and codePointIndex (一个非负整数) and returns 一个非负整数. 按
Match 记录 是用于封装正则匹配或捕获起止索引的记录值。
Match 记录具有
字段名 | 值 | 含义 |
---|---|---|
[[StartIndex]] | 一个非负整数 | 从字符串起始处开始(含)匹配开始的代码单元数量。 |
[[EndIndex]] | 一个 ≥ [[StartIndex]] 的整数 | 从字符串起始处开始匹配结束(不含)位置的代码单元数量。 |
The abstract operation GetMatchString takes arguments S (一个字符串) and match (一个
The abstract operation GetMatchIndexPair takes arguments S (一个字符串) and match (一个
The abstract operation MakeMatchIndicesIndexPairArray takes arguments S (一个字符串), indices (一个由
RegExp 实例是
在 ECMAScript 2015 之前,RegExp 实例被指定为拥有自身RegExp.prototype
的存取器属性。
RegExp 实例还具有以下属性:
RegExp String Iterator 是一个对象,表示针对某个特定 String 实例对象、以某个特定 RegExp 实例对象进行匹配时的特定迭代过程。RegExp String Iterator 对象没有命名
The abstract operation CreateRegExpStringIterator takes arguments R (一个对象), S (一个字符串), global (一个布尔值), and fullUnicode (一个布尔值) and returns 一个对象. It performs the following steps when called:
%RegExpStringIteratorPrototype% 对象:
该属性具有 { [[Writable]]:
内部槽 | 类型 | 描述 |
---|---|---|
[[IteratingRegExp]] | an Object | 用于迭代的正则表达式。 |
[[IteratedString]] | a String | 当前被迭代的字符串值。 |
[[Global]] | a Boolean | 指示 [[IteratingRegExp]] 是否为全局模式。 |
[[Unicode]] | a Boolean | 指示 [[IteratingRegExp]] 是否处于 Unicode 模式。 |
[[Done]] | a Boolean | 指示迭代是否完成。 |