mirror of
https://github.com/ruanyf/es6tutorial.git
synced 2024-04-21 12:32:22 +00:00
docs: update ES2022
This commit is contained in:
+5
-5
@@ -596,9 +596,9 @@ RE_TWICE.test('abc!abc!ab') // false
|
||||
|
||||
## 正则匹配索引
|
||||
|
||||
正则匹配结果的开始位置和结束位置,目前获取并不是很方便。正则实例的`exec()`方法,返回结果有一个`index`属性,可以获取整个匹配结果的开始位置,但是如果包含组匹配,每个组匹配的开始位置,很难拿到。
|
||||
正则匹配的结果,在原始字符串里面的开始位置和结束位置,目前获取并不是很方便。正则实例的`exec()`方法的返回结果,现有一个`index`属性,可以获取整个匹配结果的开始位置。但是,组匹配的每个组的开始位置,很难拿到。
|
||||
|
||||
现在有一个[第三阶段提案](https://github.com/tc39/proposal-regexp-match-Indices),为`exec()`方法的返回结果加上`indices`属性,在这个属性上面可以拿到匹配的开始位置和结束位置。
|
||||
[ES2022](https://github.com/tc39/proposal-regexp-match-Indices) 为`exec()`方法的返回结果加上`indices`属性,在这个属性上面可以拿到匹配的开始位置和结束位置。
|
||||
|
||||
```javascript
|
||||
const text = 'zabbcdef';
|
||||
@@ -609,9 +609,9 @@ result.index // 1
|
||||
result.indices // [ [1, 3] ]
|
||||
```
|
||||
|
||||
上面例子中,`exec()`方法的返回结果`result`,它的`index`属性是整个匹配结果(`ab`)的开始位置,而它的`indices`属性是一个数组,成员是每个匹配的开始位置和结束位置的数组。由于该例子的正则表达式没有组匹配,所以`indices`数组只有一个成员,表示整个匹配的开始位置是`1`,结束位置是`3`。
|
||||
上面例子中,`exec()`方法的返回结果`result`,它的`index`属性是整个匹配结果(`ab`)的开始位置,现在新增了一个`indices`属性。它是一个数组,每个成员还是一个数组,包含了匹配结果在原始字符串的开始位置和结束位置。由于上例的正则表达式没有组匹配,所以`indices`数组只有一个成员,表示整个匹配的开始位置是`1`,结束位置是`3`。
|
||||
|
||||
注意,开始位置包含在匹配结果之中,但是结束位置不包含在匹配结果之中。比如,匹配结果为`ab`,分别是原始字符串的第1位和第2位,那么结束位置就是第3位。
|
||||
注意,开始位置包含在匹配结果之中,相当于匹配结果的第一个字符的位置。但是,结束位置不包含在匹配结果之中,是匹配结果的下一个字符。比如,上例匹配结果的最后一个字符`b`的位置,是原始字符串的2号位,那么结束位置`3`就是下一个字符的位置。
|
||||
|
||||
如果正则表达式包含组匹配,那么`indices`属性对应的数组就会包含多个成员,提供每个组匹配的开始位置和结束位置。
|
||||
|
||||
@@ -623,7 +623,7 @@ const result = re.exec(text);
|
||||
result.indices // [ [ 1, 6 ], [ 4, 6 ] ]
|
||||
```
|
||||
|
||||
上面例子中,正则表达式包含一个组匹配,那么`indices`属性数组就有两个成员,第一个成员是整个匹配结果(`abbcd`)的开始位置和结束位置,第二个成员是组匹配(`cd`)的开始位置和结束位置。
|
||||
上面例子中,正则表达式包含一个组匹配`(cd)`,那么`indices`属性数组就有两个成员,第一个成员是整个匹配结果(`abbcd`)的开始位置和结束位置,第二个成员是组匹配(`cd`)的开始位置和结束位置。
|
||||
|
||||
下面是多个组匹配的例子。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user