mirror of
https://github.com/wangdoc/javascript-tutorial.git
synced 2025-12-24 03:03:53 +08:00
docs(stdlib): edit regexp/exec()
This commit is contained in:
@@ -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`的值,就会从指定位置开始匹配。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user