@@ -694,7 +694,7 @@ var html = "<b>Hello</b>\n<i>world!</i>";
694
694
695
695
### 贪婪模式
696
696
697
- 上一小节的三个量词符,默认情况下都是最大可能匹配,即匹配直到下一个字符不满足匹配规则为止 。这被称为贪婪模式。
697
+ 上一小节的三个量词符,默认情况下都是最大可能匹配,即匹配到下一个字符不满足匹配规则为止 。这被称为贪婪模式。
698
698
699
699
``` javascript
700
700
var s = ' aaa' ;
@@ -703,29 +703,31 @@ s.match(/a+/) // ["aaa"]
703
703
704
704
上面代码中,模式是` /a+/ ` ,表示匹配1个` a ` 或多个` a ` ,那么到底会匹配几个` a ` 呢?因为默认是贪婪模式,会一直匹配到字符` a ` 不出现为止,所以匹配结果是3个` a ` 。
705
705
706
- 如果想将贪婪模式改为非贪婪模式,可以在量词符后面加一个问号。
706
+ 除了贪婪模式,还有非贪婪模式,即最小可能匹配。只要一发现匹配,就返回结果,不要往下检查。 如果想将贪婪模式改为非贪婪模式,可以在量词符后面加一个问号。
707
707
708
708
``` javascript
709
709
var s = ' aaa' ;
710
710
s .match (/ a+? / ) // ["a"]
711
711
```
712
712
713
- 上面代码中 ,模式结尾添加了一个问号` /a+?/ ` ,这时就改为非贪婪模式,一旦条件满足,就不再往下匹配。
713
+ 上面例子中 ,模式结尾添加了一个问号` /a+?/ ` ,这时就改为非贪婪模式,一旦条件满足,就不再往下匹配, ` +? ` 表示只要发现一个 ` a ` ,就不再往下匹配了 。
714
714
715
- 除了非贪婪模式的加号,还有非贪婪模式的星号(` * ` )和非贪婪模式的问号(` ? ` )。
715
+ 除了非贪婪模式的加号( ` +? ` ) ,还有非贪婪模式的星号(` *? ` )和非贪婪模式的问号(` ? ?` )。
716
716
717
717
- ` +? ` :表示某个模式出现1次或多次,匹配时采用非贪婪模式。
718
718
- ` *? ` :表示某个模式出现0次或多次,匹配时采用非贪婪模式。
719
719
- ` ?? ` :表格某个模式出现0次或1次,匹配时采用非贪婪模式。
720
720
721
721
``` javascript
722
- ' abb' .match (/ ab* b / ) // ["abb"]
723
- ' abb' .match (/ ab*? b / ) // ["ab "]
722
+ ' abb' .match (/ ab* / ) // ["abb"]
723
+ ' abb' .match (/ ab*? / ) // ["a "]
724
724
725
- ' abb' .match (/ ab? b / ) // ["abb "]
726
- ' abb' .match (/ ab?? b / ) // ["ab "]
725
+ ' abb' .match (/ ab? / ) // ["ab "]
726
+ ' abb' .match (/ ab?? / ) // ["a "]
727
727
```
728
728
729
+ 上面例子中,` /ab*/ ` 表示如果` a ` 后面有多个` b ` ,那么匹配尽可能多的` b ` ;` /ab*?/ ` 表示匹配尽可能少的` b ` ,也就是0个` b ` 。
730
+
729
731
### 修饰符
730
732
731
733
修饰符(modifier)表示模式的附加规则,放在正则模式的最尾部。
0 commit comments