在内置对象RegExp中,有两个方法可以使用正则表达式,分别是test()和exec()。
text()用于判断正则表达式与指定的字符串是否匹配,匹配成功返回true,匹配失败返回false,此方法经常被应用在条件语句中,在每个RegExp实例中,都包含一个属性:lastIndex,定义检索的起始位置。当正则表达式中包含标志"g",每次调用test()都会更新lastIndex的值,匹配的结果也会随之改变。
var str="pw7",pat1=/\d/,pat2=/\d/g;
pat1.test(str);//true
pat2.test(str);//true
pat2.test(str);//false
exec()的功能和String中的match类似,也是在字符串中检索匹配项,有结果就返回一个数组,没有就返回null。与match不同的是,无论正则表达式是否包含标志"g",返回的数组中都会带index和input两个属性,如果有分组,还会包含分组中匹配到的文本。如果设置了标志"g",那么就会像test()一样,每次调用都会更新lastIndex属性;不带标志"g"时,,只会匹配一次,返回一个匹配项。
var str="p12w34",pat1="/(/d)(/d)/",pat2=/(\d)(\d)/g;
//["12","1","2",index:1,input:"p12w34"]
pat1.exec(str);
//["12","1","2",index:1,input:"p12w34"]
pat1.exec(str);
//["12","1","2",index:1,input:"p12w34"]
pat2.exec(str);
["34","3","4",index:4,input:"p12w34"]