1. 来源分别为: string.match(reg) 和 RegExp.exec(str);

2. 区别

>  现有 字符串s1 和 正则对象 r1.     目标: 抽出s1中的所有电话号码

var s1 = "爱是方法发生说法是否18324569078放弃而且我15656783456时光是大法官17699098765";
var r1 = /({}\d{})+/g;

>  string.match(reg) 方法参数为reg对象

1. 当reg为全局表达式 //g 时: 返回所有的匹配结果的组成的数组

2. 当reg为非全局表达式 // 时, 返回一个数组, 数组第一个元素为第一个与reg匹配的字符串, 余下参数为与字符串中的圆括号匹配的字符串, 还有index表示当前发生匹配的位置, input表示当前正在检索的字符串

>   reg.exec(str) 方法参数为str

与match方法不同的是, 无论reg是否为全局匹配, 都返回一个数组, 该数组的结果的元素含义与match方法的非全局匹配结果的元素含义一致。 不同的是exec方法会自动维护lastIndex属性。

1. 当reg为全局匹配 //g 时, 会返回包含第一个匹配结果的数组, 然后把lastIndex属性设置为当前匹配结果的结束处的位置,

当再一次调用exec()时, 会继续从lastIndex位置开始查找, 若匹配到, 则记录修改lstIndex属性, 直到查找结果为null, 则把lastIndex设为0 ,下一轮重头查找。这种特殊行为允许我们重复的调用exec方法。

2. 当reg为费全局匹配 // 时, 每次都会返回包含第一个匹配结果的数组, 然后把lastIndex设为0,既: 每次都返回第一个匹配结果的数组。

注意: RegExp.test(str)方法表现的和exec一样, 他也会维护lastIndex属性, 重复调用返回结果为: 。。。 - true - false - true - false - 。。。

js中, match和exec方法的区别的更多相关文章

  1. js中toString和valueOf方法的区别

    toString 方法 返回对象的字符串表示形式. 语法:objectname.toString([radix]) objectname 必需.要为其搜索字符串表示形式的对象. radix 可选.为将 ...

  2. js中 call() 和 apply() 方法的区别和用法详解

    1.定义 每个函数都包含俩个非继承而来的方法:call() 和 apply()   call 和 apply 可以用来重新定义函数的的执行环境,也就是 this 的指向:call 和 apply 都是 ...

  3. JS中SetTimeOut和SetInterval方法的区别?

    1.setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭.由 ...

  4. js中callback.call()和callback()的区别

    js中callback.call()和callback()的区别在js中callback.call()和callback() 有什么区别,举个例子:function a(){alert('hello! ...

  5. 网站开发进阶(二十)JS中window.alert()与alert()的区别

    JS中window.alert()与alert()的区别 前言 alert与window.alert没什么区别,如果有人觉得有区别,那就来解释一下:所有以window.开始的语句,都可以直接把wind ...

  6. JS中==、===和Object.is()的区别

    JS中==.===和Object.is()的区别 首先,先粗略了解一下这三个玩意儿: ==:等同,比较运算符,两边值类型不同的时候,先进行类型转换,再比较: ===:恒等,严格比较运算符,不做类型转换 ...

  7. jQuery中attr和prop方法的区别

    jQuery中attr和prop方法的区别。 http://my.oschina.net/bosscheng/blog/125833 http://www.javascript100.com/?p=8 ...

  8. 【前端】js中new和Object.create()的区别

    js中new和Object.create()的区别 var Parent = function (id) { this.id = id this.classname = 'Parent' } Pare ...

  9. Java线程中run和start方法的区别

    http://bbs.csdn.net/topics/350206340 Thread类中run()和start()方法的区别如下:run()方法:在本线程内调用该Runnable对象的run()方法 ...

随机推荐

  1. sparksql与hive整合

    参考文献: http://blog.csdn.net/stark_summer/article/details/48443147 hive配置 编辑 $HIVE_HOME/conf/Hive-site ...

  2. adb安装启动Touch校正软件

    /********************************************************************************* * adb安装启动Touch校正软 ...

  3. MyEclipse2014配置Tomcat开发JavaWeb程序JSP以及Servlet

    http://blog.csdn.net/21aspnet/article/details/21867241   1.安装准备 1).下载安装MyEclipse2014,这已经是最新版本. 2).下载 ...

  4. 在VM上安装centOS后的网络配置

    花了点时间,研究了下VM上的linux虚拟机的网络配置问题.1.环境主机:winXP SP2,家庭宽带,局域网连到路由器,ip地址为192.168.1.101. 虚拟机:centOS(redhat l ...

  5. CodeForces - 285E: Positions in Permutations(DP+组合数+容斥)

    Permutation p is an ordered set of integers p1,  p2,  ...,  pn, consisting of n distinct positive in ...

  6. Math对象的属性和方法

    Math对象是js提供给我们用于运算的方法的集合.若进行数学逻辑上不允许的运算,返回NaN. 属性:Math.E 返回算数常量e(2.718281828459045) Math.LN2 返回2的自然对 ...

  7. War Chess bfs+优先队列

    War chess is hh's favorite game: In this game, there is an N * M battle map, and every player has hi ...

  8. JNI学习笔记_C调用Java

    一.笔记 1.C调用Java中的方法,参考jni.pdf pg97可以参考博文:http://blog.csdn.net/lhzjj/article/details/26470999步骤: a. 创建 ...

  9. torodb docker 运行试用

    torodb 可以方便的让你迁移到pg,同时使用标准原生的sql 查询 使用官方的docker-compose 进行测试 环境准备 docker-compose 文件 wget https://raw ...

  10. Oracle 基础知识入门

    前记: 近来项目用到Oracle数据库,大学学了点,后面基本忘记得差不多了,虽然基本语法跟sql 差不多,但是oracle知识是非常多的. 这里简单说点基础知识,希望后面补上更多的关于ORacle知识 ...