RegExp对象的方法:
1.exec():该方法用于检索字符串中的正则表达式的匹配。
返回包含第一个匹配项信息的数组。如果未找到匹配,返回 null。在数组中,第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配的字符串(如果模式中没有捕获组,则该数组只包含一项)。
该数组具有额外的两个属性,index和input,index表示匹配项在字符串中的位置,input表示应用正则表达式的字符串。
在模式中如果未设置全局标志(g),在同一个字符串上多次调用exec()将始终返回第一个匹配项的信息,而设置全局标志,每次调用exec()则会在字符串中继续查找新匹配项。
例1:
var myReg = /abc/;
var str = "hgbabchgabc";
var arr = myReg.exec(str)
alert(arr);//abc(为一个数组对象,即["abc"])
alert(arr[0]);//abc(为一个字符串)
例2:
var myReg = /aa(bb(cc)?)?/g;
var str = "aabbcc";
var arr = myReg.exec(str);
alert(arr.index);//0
alert(arr.input);//aabbcc
alert(arr);//aabbcc,aabb,cc
例3:
var myReg = /abc/g;//执行全局匹配
var str = "hgbabchgabc";
alert(myReg.lastIndex);//0
alert(myReg.exec(str));//abc
alert(myReg.lastIndex);//6
alert(myReg.exec(str));//abc
alert(myReg.lastIndex);//11
alert(myReg.exec(str));//null
alert(myReg.lastIndex);//0
/*从lastIndex指定的位置开始检索字符串,找到匹配后lastIndex置于匹配文本最后一个字符的下一位置。
当找不到匹配的文本时,lastIndex置为0。只有执行全局匹配是lastIndex才起作用。
*/
2.test(): 检测是否包含匹配的文本,有返回true,无返回false。
String对象的方法:
1.search(): 返回相匹配的子串的起始位置,若无返回-1。
search() 方法不执行全局匹配,它忽略标志 g。同时忽略 regexp 的 lastIndex 属性,并且总是从字符串的开始进行检索,只返回第一个匹配的位置。
2.match(): 找到一个或多个正则表达式的匹配,返回存放匹配子串的数组。支持全局匹配。若未匹配返回null。
例:
var myReg = /abc/g;
var str = "hgbabchgabc";
alert(str.match(myReg));//abc,abc
//即返回一个数组[abc, abc];
3.replace(): 该方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。
例:
var myReg = /abc/g;
var str = "abczzabc";
newStr = str.replace(myReg,"w");
//replace方法并未对str本身进行修改。
alert(newStr);//wzzw
4.split(): 该方法用于把一个字符串分割成字符串数组。允许传入正则表达式。
例:
var str = "a22b";
var arr = str.split(/[a-z]/);
alert(arr);//,22,
//可以理解为将字母换成','该数组为['',2,2,''];
附:该方法和join()相反,join用于把数组中的所有元素放入一个字符串,
可传入参数,用该参数将数组元素分割,形成新的字符串。
例:
var arr = [1,2,3];
var str = arr.join("a");
alert(str);//1a2a3