js的正则表达式有test exec match三种不同的方法 本博客主要参考其他博客及自己看书所得,
正则有两种表达方式,一种是字面量模式,另一种是使用RegExp的模式
test:
test 返回的是Boolean ,查找对应的字符串中是否存在模式
var str="catastrop";
var reg= new RegExp("cat","g");//(使用RegExp的模式)
var reg2=/cat/g;(字面量模式)
console.log(reg.test(str));//true
console.log(reg2.test(str));//true
exec
exec查找并返回当前的匹配结果,并以数组的形式返回
var str="catastrop";
var reg=new RegExp("cat","");
var getresult=reg.exec(str);
console.log(getresult);
如果不存在模式,则getresult为null,否则getresult是一个长度为1的数组,其值就是当前匹配项,返回结果:["cat", index: 0, input: "catastrop"]
exec 方法受参数 g 的影响。若指定了 g,则下次调用 exec 时,会从上个匹配的 lastIndex 开始查找。
var reg = new RegExp("1.", "");
alert(reg.exec(str)[0]);
alert(reg.exec(str)[0]);
上述两个输出都是 1a。现在再看看指定参数 g:
var reg = new RegExp("1.", "g");
alert(reg.exec(str)[0]);
alert(reg.exec(str)[0]);
上述第一个输出 1a,第二个输出 1b。
match前两个方法都是regexp的方法,而match是string的方法
var string="catcat";
var reg=new RegExp("cat","");
console.log(string.match(reg));
如果指定了参数g,那么match一次返回所有结果
var string="catcat";
var reg=new RegExp("cat","g");
console.log(string.match(reg));
console.log(string.match(reg));
返回结果:["cat", "cat"]