http://www.cnblogs.com/tinkbell/p/4563688.html

在工作中经常发现一些同学把这两个方法搞混,以致把自己弄的很郁闷。所以我和大家一起来探讨一下这两个方法的奥妙之处吧。

我们分以下几点来讲解:

相同点:

1.两个方法都是查找符合条件的匹配项,并以数组形式返回。
2.当没有找到匹配项时,都返回null。
3.当正则表达式包含子表达式且不包含全局标志g时,二者返回相同的数组。

示例:

var str = 'cat10,bat20,kat30';
var patten = /\w(at)\d+/;
var arr = str.match(patten);
arr[0] <=> ['cat10']
arr[1] <=> ['at']

var arr = patten.exec(str);
arr[0] <=> ['cat10']
arr[1] <=> ['at']

区别:

1.match是字符串的方法,exec是RegExp对象的方法

示例:

var str = 'cat,bat,kat';
var patten = /at/;
str.match(patten); //at
patten.exec(str); //at

2.当正则表达式带有全局标志g时,二者表现不一致。

match会返回所有符合条件的匹配项,并以数组形式返回。数组第一项存放第一个匹配项,数组第二项存放第二个匹配项...依次类推。

exec则永远返回第一个匹配项。但是当连续调用exec时,则每次的返回值都是下一个匹配项。

示例1:

var str = 'cat,bat,kat';
var patten = /at/g;
str.match(patten); //['at', 'at', 'at']
patten.exec(str); //['at']

示例2:

var str = 'cat,bat,kat';
var patten = /\w+/g;
str.match(patten); //['cat', 'bat', 'kat']

//第一次调用
patten.exec(str); //['cat']
//第二次调用
patten.exec(str); //['bat']
//第三次调用
patten.exec(str); //['kat']

3.当正则表达式包含子表达式时且包含全局标志g时,二者表现不一致。

match会返回所有符合条件的匹配项,并以数组形式返回。这时,match不会再返回子表达式的匹配项了。数组第一项存放第一个匹配项,数组第二项存放第二个匹配项...依次类推。
exec会返回子表达式的匹配项。换句话说就是,数组第一项存放整个匹配项,数组第二项存放第一个子表达式匹配项,数组第三项存放第二个子表达式匹配项...依次类推。

示例:

var str = 'cat10,bat20,kat30';
var patten = /\w(at)\d+/g;
var arr = str.match(patten); //['cat10', 'bat20', 'kat30']
var arr = patten.exec(str);
arr[0] <=> ['cat10']
arr[1] <=> ['at']

转载于:https://www.cnblogs.com/skating/p/6293109.html

difference between match and exec相关推荐

  1. js正则函数match、exec、test、search、replace、split使用集合

    match 方法 使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回. stringObj.match(rgExp) 参数 stringObj 必选项.对其进行查找的 String 对 ...

  2. match和exec

    1.基本用法 match:str.match(reg) exec:reg.exec(str) 2.比较 匹配不到返回null reg不是全局搜索,两者的返回结果是一样的数组.    ['匹配到的结果' ...

  3. match和exec的对比

    :点上面关注免费学习前端知识! RegExp对象定义了两个用于执行模式匹配操作的方法.它们的行为和String方法很类似.RegExp最主要的执行模式匹配的方法是exec(),它与String中mat ...

  4. javascript中match方法和exec()方法详解与深度区别(非原创)

    match和exec的比较 1.match match方法属于String正则表达方法.  语法: str.match(regexp或者string) str:要进行匹配的字符串. regexp:一个 ...

  5. 深入javascript中的exec与match方法

    视频课堂https://edu.csdn.net/course/play/7621 经典面试题,如果知晓一下题目的答案,那就没有必要往下看了. var someText="web2.0 .n ...

  6. PHP shell_exec()与exec()

    本文翻译自:PHP shell_exec() vs exec() I'm struggling to understand the difference between shell_exec() an ...

  7. js exec方法详解

    今天查看jquery源码的时候突然被exec方法给弄懵了,特意翻了翻资料详细了解了下. 1.定义 exec() 方法用于检索字符串中的正则表达式的匹配. 使用方法:var match = RegExp ...

  8. javascript 正则方法 exec()

    exec()是RegExp对象的主要方法.exec()接受一个参数,即要应用模式的字符串,然后返回包含第一个匹配项信息的数组,或者在没有匹配项的情况下返回null. let reg = /apple ...

  9. PHP——通过下拉列表选择时间(转)

    实现效果: 主页代码: <script type="text/javascript" src="jquery.min.js"></script ...

  10. JavaScript正则表达式快速简单的指南

    Interested in learning JavaScript? Get my ebook at jshandbook.com 有兴趣学习JavaScript吗? 在jshandbook.com上 ...

最新文章

  1. Selenium2Lib库之鼠标事件常用关键字实战
  2. 串联矩阵matlab代码,Matlab串联矩阵函数【horzcat】详细解析
  3. flink批处理中的source以及sink介绍
  4. python 读取yml文件_Python 读取 yaml 配置文件 | 文艺数学君
  5. Mysql数据库按时间点恢复实战
  6. STL 之count,count_if,max,max_element,min,min_element和random_shuffle
  7. P3188-[HNOI2007]梦幻岛宝珠【背包】
  8. [水煮 ASP.NET Web API2 方法论](1-1)在MVC 应用程序中添加 ASP.NET Web API
  9. Material Design入门(三)
  10. iOS oc 线程 进程,同步异步,并发串行,来捋捋
  11. show tables mysql_MySQL_解析MYSQL显示表信息的方法,在用mysql时(show tables),有时候 - phpStudy...
  12. 【渝粤教育】电大中专计算机常用工具软件_1作业 题库
  13. 用python画竹子_基于Python的一个简单爬虫(糗事百科爬虫)
  14. TCP/IP协议头部结构与解析
  15. mysql小计_Mysql必读用SQL实现统计报表中的小计与合计的方法详解
  16. 关于安装不上tesseract和opencv以及稀里糊涂的解决方案
  17. 免费高效的Linux远程工具-MobaXterm最全图文总结
  18. aspose-words更新域/目录(页码不准确问题)
  19. Linux(centos 7) 安装mysql(5.7)
  20. buildroot教程

热门文章

  1. 《DirectX 游戏开发终极指南》游戏项目编译成功的方法
  2. [学习官方例子]TCustomComparer
  3. PostgreSQL是否区分大小写
  4. ICLR'22 | 微软亚洲研究院深度学习领域最新研究成果一览
  5. AAAI 2019 Gaussian Transformer: 一种自然语言推理的轻量方法
  6. TF-tf.keras.layers.Embedding
  7. SpringCloud——服务短路
  8. git push 提示:更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支。的解决办法
  9. 深度学习-激活函数总结
  10. 当知识图谱遇上预训练语言模型