正则匹配

 1 //分组返回
 2 var pattern=/^[a-z]+\s[0-9]{4}$/;
 3 var str='google 2012';
 4 alert(pattern.exec(str));    //返回一个包含字符串的数组
 5 
 6 
 7 var pattern=/^[a-z]+/;        //只匹配到字母
 8 var str='google 2012';
 9 alert(pattern.exec(str));    //只返回google的字符串数组
10 
11 
12 var pattern=/^([a-z]+)\s([0-9]{4})$/;    //使用了分组
13 var str='google 2012';
14 var a= pattern.exec(str);
15 // alert(a.length);    //3
16 alert(a[0]);    //返回匹配到的整个字符串
17 alert(a[1]);    //返回匹配到的第一个分组的字符串
18 alert(a[2]);    //返回匹配到的第二个分组的字符串
19 
20 
21 //捕获性分组和非捕获性分组
22 
23 var pattern=/(\d+)([a-z])/;        //这个叫做捕获性分组,所有的分组都捕获返回
24 var str='123abc';
25 var a=pattern.exec(str);
26 //a[0]返回123a
27 //a[1]返回123
28 //a[2]返回a
29 
30 
31 var pattern=/(\d+)(?:[a-z])/;        //非捕获性分组,只需要在不需要捕获返回的分组加上 ?:
32 var str='123abc';
33 var a=pattern.exec(str);
34 alert(a[1]);
35 //a[0]返回123a
36 //a[1]返回123
37 
38 
39 //使用分组嵌套
40 
41 var pattern=/(a?(b?(c?)))/;        //嵌套分组,从外往内获取
42 var str='abc';
43 var a=pattern.exec(str);
44 //第一步:a[0],整个匹配到的字符串abc
45 //第二步:a[1],匹配第一个分组(a?(b?(c?)))    abc
46 //第三步:a[2],匹配第二个分组(b?(c?))    bc
47 //第四步:a[3],匹配第三个分组(c?)    c
48 
49 
50 //使用前瞻捕获
51 var pattern=/goo(?=gle)/;    //goo后面必须是gle才能返回goo,需要注意返回的是goo而不是google
52 // var str='google';
53 var str='goobbb';
54 alert(pattern.exec(str));
55 
56 
57 //使用特殊字符匹配
58 var pattern=/\[/;    //用\符号来转义正则里的特殊字符,才能匹配
59 var str='[';
60 alert(pattern.exec(str));
61 
62 
63 //使用换行模式
64 var pattern=/^\d+/gm;        //限定了首匹配,并且开启换行模式
65 // var pattern=/\d+/g;
66 var str='1.baidu\n2.google\n3.bing';
67 alert(str.replace(pattern,'#'));
View Code

 

posted @ 2013-10-21 23:23  白小虫  阅读(202)  评论(0编辑  收藏  举报