`
Icgemu
  • 浏览: 71586 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

String.prototype.match使用小记

阅读更多

String.prototype.match(str|regexp)内部其实使用了RegExp.prototype.exec方法。

首先根据传入的参数分别创建一个RegExp对象和String对象,然后调用RegExp.exec(String);

 

使用match时有时需要注意group ()和 flag  /g的结合使用时的处理:

 

例1:

var r, re;         // 声明变量。
var s2 = "The rain in Spain falls mainly in the plain";
re = /(a)((i)(n))/i;      // 创建正则表达式模式。
r = s2.match(re);   // 尝试去匹配搜索字符串。
alert(r);         

 

返回的结果是:“ain,a,in,i,n”;

返回的是 rain中的ain,(a)((i)(n))是第一个分组,由于内部分组存在,第二个分组是a 第三个是in,第四个是i,第五个是n,match以数组的形式返回这个分组,而不会继续去匹配字符串

 

如果是下面的用法,例2:

var r, re;         // 声明变量。
var s2 = "The rain in Spain falls mainly in the plain";
re = /ain/ig;      // 创建正则表达式模式。
r = s2.match(re);   // 尝试去匹配搜索字符串。
alert(r);         

 返回的结果是:“ain,ain,ain,ain”

 

再如果是,例3:

var r, re;         // 声明变量。
var s2 = "The rain in Spain falls mainly in the plain";
re = /(a)((i)(n))/ig;      // 创建正则表达式模式。
r = s2.match(re);   // 尝试去匹配搜索字符串。
alert(r); 

 返回的结果是:“ain,ain,ain,ain”

 

总结:

1.如果使用了标识 \g时,将忽略group 分组,再全局里面进行匹配。如例 2、3

2.没有使用 标识 \g时,如果存在匹配,将对匹配的第一个返回进行分组,并再结果中返回分组结果,如例1.

 

 

 

 

 

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics