exec和match区别

1.exex是正则表达式的方法,而不是字符串的方法,它的参数是字符串

res=/\d/.exec(str);

 match是字符串提供的方法,它的参数是正则表达式

res=str.match(/\d/);

 

2.exec和match返回的都是数组。

  如果执行exec方法的正则表达式没有分组(没有用括号括起来的内容),那么如果匹配,它将返回一个只有一个元素的数组,这个数组是它匹配到的第一个字符串,如果没有匹配则返回null。

  var str='cat,hat';

  var p=/at/;  //没有g(全局属性)

alert(p.exec(str));

alert(str.match(p));

//二者返回的一样,都是  at

 

var str='cat,hat';

 var p=/at/g;  //g属性

alert(p.exec(str));  //at

alert(str.match(p));  //at   at

因为exec永远只返回第一个匹配,而match在正则表达式g属性时,会返回所有的匹配。

 

3.exec如果找到了匹配,且包含分组,返回的数组包含多个元素,第一个元素是找到的匹配,之后的依次是该匹配的第一个、第二个。。。个分组

  var str='cat2,hat8,mat6,cat3';

 var p=/c(at)\d/;  //查找一个at前有c,且at后有数字的元素

 alert(p.exec(str));

//cat2,at

//cat2第一个匹配//at代表分组(at)

 

4.注意!!!match函数在满足正则表达式分组且返回一个匹配(没g)的情况下,实现与exec一样的功能。

  接上面的代码

  alett(str.match(p));

//cat2,at

 

总结:

1.g对exec没有任何影响;

2.exec    没分组  只返回一个匹配

              有分组  先找到同时满足所有分组的元素,

                           再找分别满足各个分组的的元素,

                           把找到的元素都返回。

3.match    没g没分组   只返回第一个匹配元素;

                 没g有分组  与exec有分组相同;

                 有g有分组   返回找到所有同时满足所有分组的元素。

 

经典案例

var str='web2.0,net2.0';

var res=/(\w+)(\d)\.(\d)/;   //web2.0 ,  web , 2 , 0

var res2=/(\w+)(\d)\.(\d)/g;  //web2.0 , net2.0

 

转载于:https://www.cnblogs.com/zhangxm/p/7483307.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值