?uem/p1-90`String
extends 子句的值。希望继承指定 String 行为的子类super 调用,以创建并初始化具有 [[StringData]] 内部槽的子类实例。调用时,此函数执行以下步骤:
String
可以使用任意数量的参数调用此函数,这些参数构成剩余参数 codeUnits。
调用时,它执行以下步骤:
此函数的
可以使用任意数量的参数调用此函数,这些参数构成剩余参数 codePoints。
调用时,它执行以下步骤:
此函数的
String.prototype 的初始值是
此属性具有特性 { [[Writable]]:
可以使用可变数量的参数调用此函数。第一个参数是 template,其余参数构成
调用时,它执行以下步骤:
String 原型对象:
除非另有明确说明,下面定义的 String 原型对象的方法不是通用方法,传递给它们的
调用时,此方法执行以下步骤:
此方法有意设计为通用方法;它不要求其
此方法返回一个 Number(小于 216 的非负
调用时,此方法执行以下步骤:
此方法有意设计为通用方法;它不要求其
调用时,此方法执行以下步骤:
此方法有意设计为通用方法;它不要求其
调用此方法时,它返回由
调用时,此方法执行以下步骤:
此方法的
此方法有意设计为通用方法;它不要求其
String.prototype.constructor 的初始值是
调用时,此方法执行以下步骤:
规定当第一个参数是 RegExp 时抛出异常,是为了允许未来版本定义允许此类参数值的扩展。
此方法有意设计为通用方法;它不要求其
调用时,此方法执行以下步骤:
如果 searchString 作为将此对象转换为 String 所得结果的
规定当第一个参数是 RegExp 时抛出异常,是为了允许未来版本定义允许此类参数值的扩展。
此方法有意设计为通用方法;它不要求其
如果 searchString 作为将此对象转换为 String 所得结果的
调用时,此方法执行以下步骤:
此方法有意设计为通用方法;它不要求其
调用时,此方法执行以下步骤:
如果 searchString 作为将此对象转换为 String 所得结果的
调用时,此方法执行以下步骤:
此方法有意设计为通用方法;它不要求其
此方法返回一个不是
执行比较之前,此方法执行以下步骤来准备 Strings:
此方法第二个和第三个可选参数的含义定义于 ECMA-402;不
实际返回值由
此方法本身并不直接适合作为 Array.prototype.sort 的参数,因为后者要求一个接受两个参数的函数。
此方法可以依赖 ECMAScript 环境从
// Å ANGSTROM SIGN 与
// Å LATIN CAPITAL LETTER A + COMBINING RING ABOVE
"\u212B".localeCompare("A\u030A")
// Ω OHM SIGN 与
// Ω GREEK CAPITAL LETTER OMEGA
"\u2126".localeCompare("\u03A9")
// ṩ LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE 与
// ṩ 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 与
// ḍ̇ LATIN SMALL LETTER D WITH DOT BELOW + COMBINING DOT ABOVE
"\u1E0B\u0323".localeCompare("\u1E0D\u0307")
// 가 HANGUL CHOSEONG KIYEOK + HANGUL JUNGSEONG A 与
// 가 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 节所定义的 Unicode 兼容等价或兼容分解。
此方法有意设计为通用方法;它不要求其
调用时,此方法执行以下步骤:
此方法有意设计为通用方法;它不要求其
此方法使用 regexpOrPattern 对表示
调用时,它执行以下步骤:
String.prototype.split 类似,String.prototype.matchAll 被设计为通常不会修改其输入。调用时,此方法执行以下步骤:
此方法有意设计为通用方法;它不要求其
调用时,此方法执行以下步骤:
调用时,此方法执行以下步骤:
参数 maxLength 将被
参数 fillString 默认为
调用时,此方法执行以下步骤:
此方法创建由
此方法有意设计为通用方法;它不要求其
调用时,此方法执行以下步骤:
此方法有意设计为通用方法;它不要求其
调用时,此方法执行以下步骤:
调用时,此方法执行以下步骤:
此方法有意设计为通用方法;它不要求其
此方法返回将此对象转换为 String 所得结果的一个
调用时,它执行以下步骤:
此方法有意设计为通用方法;它不要求其
此方法返回一个 Array,其中存储了将此对象转换为 String 所得结果的
调用时,它执行以下步骤:
separator 的值可以是空 String。在这种情况下,separator 不匹配输入 String 开头或末尾的空
如果
如果 separator 是
此方法有意设计为通用方法;它不要求其
调用时,此方法执行以下步骤:
规定当第一个参数是 RegExp 时抛出异常,是为了允许未来版本定义允许此类参数值的扩展。
此方法有意设计为通用方法;它不要求其
此方法返回将此对象转换为 String 所得结果的一个
如果任一参数是
如果 start 严格大于 end,则交换它们。
调用时,它执行以下步骤:
此方法有意设计为通用方法;它不要求其
此方法按照
它的工作方式与 toLowerCase 完全相同,只是旨在产生符合
此方法可选参数的含义定义于 ECMA-402;不
此方法有意设计为通用方法;它不要求其
此方法按照
它的工作方式与 toUpperCase 完全相同,只是旨在产生符合
此方法可选参数的含义定义于 ECMA-402;不
此方法有意设计为通用方法;它不要求其
此方法按照
调用时,它执行以下步骤:
结果必须根据 Unicode Character Database 中与区域设置无关的大小写映射得出(这明确不仅包括文件 UnicodeData.txt,还包括随附文件 SpecialCasing.txt 中所有与区域设置无关的映射)。
某些码点的大小写映射可能产生多个码点。在这种情况下,结果 String 的长度可能与源 String 不同。由于 toUpperCase 和 toLowerCase 都具有上下文敏感行为,因此这些方法并不对称。换句话说,s.toUpperCase().toLowerCase() 不一定等于 s.toLowerCase()。
此方法有意设计为通用方法;它不要求其
调用时,此方法执行以下步骤:
对于 String 对象,此方法碰巧返回与 valueOf 方法相同的内容。
此方法按照
它的行为与 String.prototype.toLowerCase 完全相同,只是 String 使用 Unicode Default Case Conversion 的 toUppercase 算法进行映射。
此方法有意设计为通用方法;它不要求其
此方法返回此对象的 String 表示,其中所有不属于
调用时,它执行以下步骤:
此方法按照
调用时,它执行以下步骤:
此方法有意设计为通用方法;它不要求其
空白的定义是
此方法按照
调用时,它执行以下步骤:
此方法有意设计为通用方法;它不要求其
此方法按照
调用时,它执行以下步骤:
此方法有意设计为通用方法;它不要求其
调用时,此方法执行以下步骤:
此方法返回一个迭代器对象,用于迭代 String 值的码点,并将每个码点作为 String 值返回。
调用时,它执行以下步骤:
此方法的
String 实例是
String 实例具有
此 String 对象所表示的 String 值中的元素数量。
一旦 String 对象初始化,此属性便不会改变。它具有特性 { [[Writable]]:
String Iterator 是表示对某个特定 String 实例对象进行某次特定迭代的对象。String Iterator 对象没有具名
%StringIteratorPrototype% 对象:
此属性具有特性 { [[Writable]]:
RegExp 对象
正则表达式的形式和功能以 Perl 5 编程语言中的正则表达式机制为模型。
RegExp
对于每个 \u u \u u
这里的前两行等价于 CharacterClass。
本节中的若干产生式在
本节在
PropertyValueAliases.txt 中为 PropertyValueAliases.txt 中为 General_Category (gc) 属性列出的 Unicode 属性值或属性值别名,也不是 ( 终结符匹配的任何 ( 模式字符。
本节在
调用时执行以下步骤:
本节在
调用时执行以下步骤:
本节在
它按以下产生式分别定义:
“
本节在
它按以下产生式分别定义:
本节在
它按以下产生式分别定义:
| 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> 字符,并且后面不能跟十进制数字。
正则表达式模式通过下面描述的过程转换为
如果一个 u 也不v,则它是 BMP 模式。否则,它是 Unicode 模式。BMP 模式与被解释为由基本多文种平面范围内 Unicode 码点的 16 位值序列组成的 String 进行匹配。Unicode 模式与被解释为由使用 UTF-16 编码的 Unicode 码点组成的 String 进行匹配。在描述 BMP 模式行为的上下文中,“字符”表示单个 16 位 Unicode BMP 码点。在描述 Unicode 模式行为的上下文中,“字符”表示 UTF-16 编码的码点(
例如,考虑一个在源文本中表示为单个非 BMP 字符 U+1D11E (MUSICAL SYMBOL G CLEF) 的模式。解释为 Unicode 模式时,它将是一个单元素(字符)
模式作为 ECMAScript String 值传递给 RegExp
实现实际上可以不执行与 UTF-16 之间的此类转换,但本规范的语义要求模式匹配的结果如同执行了此类转换。
以下描述使用下列内部数据结构:
RegExp Record 是用于存储编译期间以及可能在匹配期间所需 RegExp 信息的
它具有以下字段:
| 字段名称 | 值 | 含义 |
|---|---|---|
| [[IgnoreCase]] | a Boolean | 表示 |
| [[Multiline]] | a Boolean | 表示 |
| [[DotAll]] | a Boolean | 表示 |
| [[Unicode]] | a Boolean | 表示 |
| [[UnicodeSets]] | a Boolean | 表示 |
| [[CapturingGroupsCount]] | a non-negative integer | RegExp 模式中 |
Pattern 会编译为
本节在
它按以下产生式分别定义:
| 正则表达式运算符分隔两个备选项。模式首先尝试匹配左侧 | 跳过的模式部分中的任何捕获括号都会产生
/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 的值无关。
连续的
所得
后跟
如果
比较
/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 的最大公约数:
"aaaaaaaaaa,aaaaaaaaaaaaaaa".replace(/^(a+)\1*,\1+$/, "$1")
它以一元表示法返回最大公约数
本节在
它按以下产生式分别定义:
即使模式使用 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,其后不能紧跟某个正a、一个 b、另一个 n 个 a(由第一个 \2 指定)以及一个 c。第二个 \2 位于负向先行
["baaabaac", "ba", undefined, "abaac"]
本节在
它按以下产生式分别定义:
形式 ( ) 的括号既用于将 \ 后跟非零十进制数)、在替换 String 中引用,或者作为正则表达式匹配 (?: )。
形式为 \ 后跟非零十进制数 n 的转义序列会匹配第 nth 组捕获括号(
CaseFolding.txt 为 char 提供了简单或通用大小写折叠映射,则返回将该映射应用于 char 的结果。在 ß (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),而 K (U+212A KELVIN SIGN) 大小写折叠为 k (U+006B LATIN SMALL LETTER K)。/[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 匹配。
本节在
它按以下产生式分别定义:
即使模式忽略大小写,范围两端的大小写仍会影响哪些字符属于该范围。因此,例如,模式 /[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 是
\b、\B、\w 和 \W 而被视为“单词字符”的字符。 调用时执行以下步骤:
CaseFolding.txt 中的 Simple Case Folding(
实现必须支持
例如,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 |
PropertyValueAliases.txt 中为 Unicode 属性 p 列出的属性值或属性值别名。实现必须支持 PropertyValueAliases.txt 中为
例如,Xpeo 和 Old_Persian 是有效的 Script_Extensions 值,但 xpeo 和 Old Persian 无效。
此算法与 UAX44 中列出的符号值匹配规则不同:不会忽略大小写、Is 前缀。
本节在
调用时执行以下步骤:
RegExp
extends 子句的值。希望继承指定 RegExp 行为的子类super 调用,以创建并初始化具有必要内部槽的子类实例。调用时,此函数执行以下步骤:
如果使用
RegExp
此函数返回 string 的副本,其中在正则表达式
调用时,它执行以下步骤:
\0 字符转义或 \1 等 \c 之后的上下文中具有相同作用。尽管名称相似,RegExp.escape 执行的操作并不相似。前者转义模式以便表示为字符串,而此函数转义字符串以便在模式内部表示。
RegExp.prototype 的初始值是
此属性具有特性 { [[Writable]]:
RegExp[%Symbol.species%] 是
此函数的
RegExp 原型方法通常使用其
RegExp 原型对象:
RegExp 原型对象没有自己的
RegExp.prototype.constructor 的初始值是
此方法在 string 中搜索正则表达式模式的出现位置,并返回
调用时,它执行以下步骤:
RegExp.prototype.dotAll 是
RegExp.prototype.flags 是
RegExp.prototype.global 是
RegExp.prototype.hasIndices 是
RegExp.prototype.ignoreCase 是
调用时,此方法执行以下步骤:
此方法的
调用时,此方法执行以下步骤:
此方法的
RegExp.prototype.multiline 是
调用时,此方法执行以下步骤:
此方法的
调用时,此方法执行以下步骤:
此方法的
执行搜索时,会忽略此 RegExp 对象的
RegExp.prototype.source 是
/ 或任何 /// 后跟 flags 会被解析为 尽管名称相似,RegExp.escape 和 EscapeRegExpPattern 执行的操作并不相似。前者转义字符串以便在模式内部表示,而此函数转义模式以便表示为字符串。
此方法返回一个 Array,其中存储了将 string 转换为 String 所得结果的
/a*?/[Symbol.split]("ab") 求值为数组 ["a", "b"],而 /a*/[Symbol.split]("ab") 求值为数组 ["","b"]。)
如果 string 是空 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 是
如果未找到可调用的
Match Record 是用于封装正则表达式匹配或捕获的起始和结束索引的
Match Record 具有
| 字段名称 | 值 | 含义 |
|---|---|---|
| [[StartIndex]] | a non-negative integer | 从字符串开头到匹配开始位置( |
| [[EndIndex]] | an integer ≥ [[StartIndex]] | 从字符串开头到匹配结束位置(不 |
RegExp 实例是从
RegExp 实例还具有以下属性:
RegExp String Iterator 是表示对某个特定 String 实例对象进行某次特定迭代,同时与某个特定 RegExp 实例对象进行匹配的对象。RegExp String Iterator 对象没有具名
%RegExpStringIteratorPrototype% 对象:
此属性具有特性 { [[Writable]]:
| 内部槽 | 类型 | 描述 |
|---|---|---|
| [[IteratingRegExp]] | an Object | 用于迭代的正则表达式。 |
| [[IteratedString]] | a String | 正在被迭代的 String 值。 |
| [[Global]] | a Boolean | 表示 [[IteratingRegExp]] 是否为全局正则表达式。 |
| [[Unicode]] | a Boolean | 表示 [[IteratingRegExp]] 是否处于 Unicode 模式。 |
| [[Done]] | a Boolean | 表示迭代是否完成。 |