我们先从最简单的正则表达式学起
比如“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 次。 |