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.

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值