理顺 JavaScript (19) - 正则表达式对象 RegExp
2010-09-14 13:42:18 来源:WEB开发网正则表达式对象的 2 个方法之 exec
//exec 返回的是匹配结果, 是个数组
var str, p, arr;
str = '1:abc;2:Abc;3:aBc;4:abC;5:ABc;6:aBC;7:AbC;8:ABC';
p = /abc/i;
arr = p.exec(str);
alert(arr); //abc
//怎么能知道返回的 arr 是个数组, 测试一下:
alert(arr instanceof Array); //true
alert(arr[0]); //abc
//何必要用数组表达? 因为正则表达式中可能会有"子表达式", 譬如:
p = /(ab)(c)/i;
//子表达式是用 () 区分的, 上面表达式包含两个子表达式; 用于 exec 函数时将返回 length = 3 的数组:
//arr[0]: 匹配整个表达式的结果;
//arr[1]: 匹配第一个子表达式的结果;
//arr[2]: 匹配第二个子表达式的结果...
//包含子表达式的例子(继续使用上面的字符串 str)
p = /(ab)(c)/i;
arr = p.exec(str);
alert(arr); //abc,ab,c
//遍历这个数组
for (var i=0; i < arr.length; i++) {
alert(arr[i]); //abc / ab / c
}
//这个返回的数组还有两个属性: index(匹配到的内容在字符串中的位置)、input(原始字符串)
alert(arr.index); //2; 因为是 0 起, 也就是 3
alert(arr.input); //1:abc;2:Abc;3:aBc;4:abC;5:ABc;6:aBC;7:AbC;8:ABC
//如果找不到, exec 会返回 null; 这对继续探讨很有用
p = /abcde/i;
alert(p.exec(str)); //null
Tags:理顺 JavaScript 正则
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接