理顺 JavaScript (19) - 正则表达式对象 RegExp
2010-09-14 13:42:18 来源:WEB开发网关于 exec 的全局匹配
//首先, exec 不会像 String.match 那样方便的完成全局匹配; 不过这恰是它的强大之处.
//第一个例子没有指定 g; 执行了三次 exec 结果都是一样的
var str, p1, arr;
str = '1:abc;2:Abc;3:aBc;4:abC;5:ABc;6:aBC;7:AbC;8:ABC';
p1 = /(ab)(c)/i;
arr = p1.exec(str);
alert(arr); //abc,ab,c
arr = p1.exec(str);
alert(arr); //abc,ab,c
arr = p1.exec(str);
alert(arr); //abc,ab,c
alert(p1.lastIndex); //5
//这个例子使用了全局匹配, 结果不一样了;
var str, p2, arr;
str = '1:abc;2:Abc;3:aBc;4:abC;5:ABc;6:aBC;7:AbC;8:ABC';
p2 = /(ab)(c)/ig;
arr = p2.exec(str);
alert(arr); //abc,ab,c
arr = p2.exec(str);
alert(arr); //Abc,Ab,c
arr = p2.exec(str);
alert(arr); //aBc,aB,c
alert(p2.lastIndex); //17
//可以这样遍历所有匹配:
var str, p, arr;
str = '1:abc;2:Abc;3:aBc;4:abC;5:ABc;6:aBC;7:AbC;8:ABC';
p = /(ab)(c)/ig;
while ((arr = p.exec(str)) != null) {
alert(arr); //可在此提取子表达式的匹配结果, 这个功能只有 exec 可以.
}
系列文章:
理顺 JavaScript (1) - 准备工具
Tags:理顺 JavaScript 正则
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接