javascript 中String.match()与RegExp.exec()的区别简析

1. 这两个方法,如果匹配成功,返回一个数组,匹配失败,返回null。 

2. 当RegExp的global属性为false时,这两个方法的返回数组是一样的。

最重要的就是第二句话,就是在设置//g。设置全局搜寻g和不设置g,是String.match()与RegExp.exec()最大的区别。

举个例子,拿《JS高级程序》这本书的一个例子,我们延展开来讲(书中没有把这个区别讲出来)。

字符串为:var text="cat,bat,sat,fat" ; 正则表达式为:var pattern1=/.at/(这里没有设置全局属性)

1、不使用全局属性g

var matches=pattern1.exec(text);输出matches结果:["cat"]  
 var matches2=text.match(pattern1); 输出matches2结果:["cat"]
当不全局搜寻的时候,匹配的数组中只有第一个匹配项

2、使用全局属性g


正则表达式改为:var pattern1=/.at/g

var matches=pattern1.exec(text);输出matches结果:["cat", "bat", "sat", "fat"]
 var matches2=text.match(pattern1);输出matches2结果:["cat"]
当不全局搜寻的时候,匹配的数组中只有第一个匹配项

结论:在有全局对象时,匹配的数组用String.match(),能得到所有匹配项,而RegExp.exec()只能匹配第一项。

其实额外需要注意的是RegExp的lastIndex属性在有g标识符,且在exec和test方法中是有效的,其他地方是无效的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值