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. select 从应用层到内核实现解析

    在一个应用中,如果需要读取多个设备文件,这其中有多种实现方式: 1.使用一个进程,并采用同步查询机制,不停的去轮询每一个设备描述符,当设备描述符不可用时,进程睡眠. 2:使用多个进程或者线程分别读取一 ...

  2. 第十五篇 make中的隐式规则概述

      前面我们讲到了makefile的依赖拆分的知识,现在可以引申出这样一个问题,如果同一个目标的不同命令拆分的写到不同地方会发生什么?下面我们给出程序和执行结果:   可见后面的命令会覆盖前面的命令, ...

  3. 【论文解读】行人检测:What Can Help Pedestrian Detection?(CVPR'17)

    前言 本篇文章出自CVPR2017,四名作者为Tsinghua University,Peking University, 外加两名来自Megvii(旷视科技)的大佬. 文章中对能够帮助行人检测的ex ...

  4. makefile for opencv

    makefile #################################################### # Generic makefile - 万能Makefile # for ...

  5. Codeforces Beta Round #81 A Transmigration

    在魔界战记中有一个设定叫做转生,当一个人物转生时,会保留之前的技能,但是技能等级需要乘以一个系数 k ,如果技能等级小于100,将会在转生之后失去该技能. 转生之后,会学到一些新技能.这些新技能附加的 ...

  6. STS或eclipse安装SVN插件(转)

    安装sts--SVN插件 简介:sts是与eclipse类似的Java IDE开发工具(不了解的百度) 1.sts菜单栏 help->install New Software 依据大家的版本选择 ...

  7. smarty学习——变量调节器(过滤器)

    变量调节器用于变量,自定义函数和字符串. 请使用 | 符号和调节器名称应用调节器.变量调节器由赋予的参数值决定其行为.参数由:符号分开. 比如进行大写转换的: upper demo: <br&g ...

  8. silverlight 进行本地串口调用的一种可行的解决方法 之silverlight端代码

    接上边的文章. 在javascript暴露操作activex 串口接收之后,就是silverlight端进行串口数据的显示,我们的显示方式比较简单,只是为了演示,我们每隔1秒进行数据的获取并显示, 为 ...

  9. Python–logging模块知多少

    我们在写程序的时候经常会打一些日志来帮助我们查找问题,这次学习一下logging模块,在python里面如何操作日志. 介绍一下logging模块,logging模块就是python里面用来操作日志的 ...

  10. js 数组方法比较

    js 数组方法比较 table th:first-of-type { width: 80px; } table th:nth-of-type(2) { width: 120px; } table th ...