docs(stdlib): edit regexp/exec()

This commit is contained in:
ruanyf
2020-02-13 13:55:20 +08:00
parent 4aad260513
commit f71489d048

View File

@@ -137,7 +137,7 @@ new RegExp('').test('abc')
### RegExp.prototype.exec()
正则实例对象的`exec`方法,用来返回匹配结果。如果发现匹配,就返回一个数组,成员是匹配成功的子字符串,否则返回`null`
正则实例对象的`exec()`方法,用来返回匹配结果。如果发现匹配,就返回一个数组,成员是匹配成功的子字符串,否则返回`null`
```javascript
var s = '_x_x';
@@ -159,12 +159,12 @@ var r = /_(x)/;
r.exec(s) // ["_x", "x"]
```
上面代码的`exec`方法,返回一个数组。第一个成员是整个匹配的结果,第二个成员是圆括号匹配的结果。
上面代码的`exec()`方法,返回一个数组。第一个成员是整个匹配的结果,第二个成员是圆括号匹配的结果。
`exec`方法的返回数组还包含以下两个属性:
`exec()`方法的返回数组还包含以下两个属性:
- `input`:整个原字符串。
- `index`整个模式匹配成功的开始位置从0开始计数
- `index`模式匹配成功的开始位置从0开始计数
```javascript
var r = /a(b+)a/;
@@ -178,7 +178,7 @@ arr.input // "_abbba_aba_"
上面代码中的`index`属性等于1是因为从原字符串的第二个位置开始匹配成功。
如果正则表达式加上`g`修饰符,则可以使用多次`exec`方法,下一次搜索的位置从上一次匹配成功结束的位置开始。
如果正则表达式加上`g`修饰符,则可以使用多次`exec()`方法,下一次搜索的位置从上一次匹配成功结束的位置开始。
```javascript
var reg = /a/g;
@@ -204,7 +204,7 @@ r4 // null
reg.lastIndex // 0
```
上面代码连续用了四次`exec`方法,前三次都是从上一次匹配结束的位置向后匹配。当第三次匹配结束以后,整个字符串已经到达尾部,匹配结果返回`null`,正则实例对象的`lastIndex`属性也重置为`0`,意味着第四次匹配将从头开始。
上面代码连续用了四次`exec()`方法,前三次都是从上一次匹配结束的位置向后匹配。当第三次匹配结束以后,整个字符串已经到达尾部,匹配结果返回`null`,正则实例对象的`lastIndex`属性也重置为`0`,意味着第四次匹配将从头开始。
利用`g`修饰符允许多次匹配的特点,可以用一个循环完成全部匹配。
@@ -222,7 +222,7 @@ while(true) {
// #8:a
```
上面代码中,只要`exec`方法不返回`null`,就会一直循环下去,每次输出匹配的位置和匹配的文本。
上面代码中,只要`exec()`方法不返回`null`,就会一直循环下去,每次输出匹配的位置和匹配的文本。
正则实例对象的`lastIndex`属性不仅可读,还可写。设置了`g`修饰符的时候,只要手动设置了`lastIndex`的值,就会从指定位置开始匹配。