正则表达式-重复

阅读: 4993    发布时间: 2018-01-26 10:53:44

我们先从最简单的正则表达式学起

比如“google”,就是一个正则表达式,只要包含“google”的字符串就能匹配成功,但是gooooogle就会匹配失败

var patt=/google/
alert( patt.test("google"))       //返回true
alert( patt.test("goooooogle"))   //返回false

假如我们想匹配任意个“o”,我们可以将正则表达式改成这样“go*gle”,“*”在正则表达式里面是一个特殊字符,我们称为“元字符”,表示匹配前面的子表达式零次或多次,在go*gle”中,“*”前面是“o”,也就是说“o”可以出现0次或者多次

var patt=/go*gle/
alert( patt.test("ggle"))          //返回true
alert( patt.test("goooooogle"))    //返回true

如果我们想要“o”,出现至少1次,可以用元字符“?”,“go+gle”

var patt=/go+gle/
alert( patt.test("ggle"))        //返回false
alert( patt.test("gogle"))       //返回true
alert( patt.test("goooooogle"))  //返回true

如果我们想要“o”,出现0次或者1次,可以用元字符“?”,“go?gle”

var patt=/go?gle/
alert( patt.test("ggle"))        //返回true
alert( patt.test("gogle"))       //返回true
alert( patt.test("goooooogle"))  //返回false

我们也可以指定o出现的次数比如“go{3}gle”,{n}代表出现n次

var patt=/go{3}gle/
alert( patt.test("google"))     //返回false
alert( patt.test("gooogle"))    //返回true
alert( patt.test("goooooogle")) //返回false

也可以指定出现次数的区间比如“go{2,3}gle”,{n,m}代表出现次数大于等于n,小于等于m

var patt=/go{2,3}gle/
alert( patt.test("google"))     //返回true
alert( patt.test("gooogle"))    //返回true
alert( patt.test("goooooogle")) //返回false

如果不指定最大次数,比如“go{2,}gle”,意味着只要大于等于2次,都匹配成功,{n,}代表出现次数大于等于n

var patt=/go{2,}gle/
alert( patt.test("google"))     //返回true
alert( patt.test("gooogle"))    //返回true
alert( patt.test("goooooogle")) //返回true


"*"代表出现无数次,等同于{0,}

"+"代表出现至少1次,等同于{1,}

"?"代表出现0-1次,等同于{0,1}


*

匹配前面的子表达式零次或多次。

+

匹配前面的子表达式一次或多次。

?

匹配前面的子表达式零次或一次。

{n}

n 是一个非负整数。匹配确定的 n 次。

{n,}

n 是一个非负整数。至少匹配n 次。

{n,m}

m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。