重复匹配

课后整理 2020-12-10

在正则表达式语法中,定义了一组重复类量词,如下所示。它们定义了重复匹配字符的确数或约数。

【示例】下面结合示例演示说明。先设计一个字符串:

var s = "ggle gogle google gooogle goooogle gooooogle goooooogle  gooooooogle goooooooogle"
var r = /go?gle/g;                                      //匹配前一项字符o0次或1次 
var a = s.match(r);                                     //返回数组["ggle", "gogle"]

量词"?"表示前面字符或子表达式为可有可无,等效于:

var r = /go{0,1}gle/g;                                //匹配前一项字符o0次或1次 
var a = s.match(r);                                     //返回数组["ggle", "gogle"]
var r = /go{3}gle/g;                                   //匹配前一项字符o重复显示3次 
var a = s.match(r);                                     //返回数组["gooogle"]

等效于:

var r = /gooogle/g;                                    //匹配字符gooogle
var a = s.match(r);                                     //返回数组["gooogle"]
var r = /go{3,5}gle/g;                                //匹配第4个到第6个之间的单词 
var a = s.match(r);                                     //返回数组["gooogle",  "goooogle", "gooooogle"]
var r = /go*gle/g;                                      //匹配所有的单词 
var a = s.match(r);                                   //返回数组["ggle", "gogle",  "google", "gooogle", "goooogle", "gooooogle",  "goooooogle", "goooooooogle", "gooooooooogle"]

量词"*"表示前面字符或子表达式可以不出现,或者重复出现任意多次。等效于:

var r = /go{0,}gle/g;                                  //匹配所有的单词 
var a = s.match(r);                                   //返回数组["ggle", "gogle",  "google", "gooogle", "goooogle", "gooooogle",  "goooooogle", "goooooooogle", "gooooooooogle"]
var r = /go+gle/g;                                      //匹配的单词中字符"o"至少出现1次 
var a = s.match(r);                                    //返回数组["gogle", "google",  "gooogle", "goooogle", "gooooogle", "goooooogle",  "goooooooogle", "gooooooooogle"]

量词"+"表示前面字符或子表达式至少出现1次,最多重复次数不限。等效于:

var r = /go{1,}gle/g;                                  //匹配的单词中字符"o"至少出现1次 
var a = s.match(r);                                    //返回数组["gogle", "google",  "gooogle", "goooogle", "gooooogle", "goooooogle",  "goooooooogle", "gooooooooogle"]

【注意】

重复类量词总是出现在它们所作用的字符或子表达式后面。如果想作用多个字符,需要使用小括号把它们包裹在一起形成一个子表达式。