今天复习了一下正表达式对象的常用方法,对其中的细节进行总结了一下
下面详细介绍一下各个方法的详细使用
1 regExpObject.test(string value) 该方法通过正则表达式对象进行调用,该方法的功能就是检查字符串参数值中是否含有匹配regExpObject对象的子字符串,如果含由匹配的字符串,则返回true,否则返回false,也就是说该方法的返回值的类型为true,该方法当发现第一个匹配的字符串时,将不再继续向下寻找,直接返回,既不会忽略正则表达式中的全局匹配符g(进行全局搜索),不会忽略i字符,如果要使用lastIndex属性,则需要给调用该方法的正则表达式添加全局匹配符g,否则lastIndex属性将不起作用,其值始终为0,一旦添加了g全局匹配符g,则lastIndex的值为匹配的字符串结束的索引,示例如下:
///搜索不分大小写的Hello字符串
var patt2 = /Hello/ig;var str2 = "world,Hell,Hello";//返回值为truedocument.write("patt2.test(str2)",patt2.test(str2));//由于加了g字符,此时的lastIndex值为:16,如果还要继续使用正则表达式匹配其它字符串对象,则需要将lastIndex的值置为0//既只找到第一个符合的正则表达式的子字符串后返回,否则将继续向后寻找document.write("test()方法之后的lastIndex值为:",patt2.lastIndex,"<br />");
2 regExpObject.exec(string value) 该方法通过正则表达式进行调用,该方法的功能就是搜索字符串参数值中所有的匹配正则表达式的第一个字符串,该搜索为全局搜索,不会忽略g字符和i字符,但只返回第一个匹配的子字符串,如果未找到匹配的字符串,会继续向后进行搜索,直到找到第一个匹配的子字符串,然后返回,不再向后寻找,如果 未找到匹配的字符串,则返回null,该方法的返回值为字符串类型,如果需要使用lastIndex属性,需要为正则表达式添加g全局匹配符,如果找到第一个匹配的子字符串,则该lastIndex的值为第一个匹配的子字符串的结束处的索引,否则lastIndex的值始终0,示例如下:
var str="helloworld! Hello world ";
//寻找 "Hello",只输出第一个hello
var patt=/Hello/ig;
var result = patt.exec(str);
document.write("Returned value: " + result);
//匹配完成后的lastIndex的值为,此时的输出的值为,9(由于添加了g字符) 否则lastIndex不起作用
document.write(patt.lastIndex);
//look for "world "
patt=/world/g;
result=patt.exec(str);
document.write("<br>Returned value: " + result);
//匹配完world之后的lastIndex的值为
document.write(patt.lastIndex);
//(在不改变最初的正则表达式之前,一旦改变了正则表达式的值,则该lastIndex的值 将变为
0)如果不将lastIndex的值在匹配之后恢复为0,则如果再次使用该正则表达式的时候
//则从lastIndex值指定的索引出开始匹配,而不是从头进行匹配。
document.write(patt.exec(str));
3 string.search(regExpObject) 该方法通过字符串对象进行调用,检索该字符串中与正则表达式匹配的第一个子字符串的开始的索引值,该方法默认进行全局搜索,忽略g字符,果找到了第一个匹配的子字符串,则返回其开始的索引值,将不再向下进行寻找,否则将继续寻找,直到字符串结尾,如果未找到则返回-1,该方法的调用对正则表达式的lastIndex属性没有任何影响,该值始终为0,示例如下:
var str3 = "1212,W3rld! WorLD";
var patter3 = /world/ig;
//输出的索引为的位置为12
document.write("-----------",str3.search(patter3));
document.write("----",patter3.lastIndex);
// lastIndex的值为0,如论加不加g符,其值始终为0
alert("patter3的lastIndex:"+patter3.lastIndex);
4 string.match(regExpObject) 该方法通过字符串对象进行调用,该方法的功能为搜索字符串中与正则表达式匹配的所有的子字符串,该方法的返回值为一个集合对象,包含多个字符串对象,如果未找到一个匹配的子字符串,则既返回值为null,默认为全局搜索,忽略g字符,不会忽略i字符,该方法对lastIndex的值不会有任何影响,该值始终为0,示例如下:
var str4 = "zhangxiaoweizhangxiaoweiZhAng";
var patter = /zhang/ig;
//返回的长度为3
document.write("<br />",str4.match(patter).length);
//lastIndex的值为:0
document.write("----",patter.lastIndex);