Js正则表达式exec用法以及与match方法的区别

1 match

match为字符串的匹配方法
match全局匹配时其输出元素中将包含所有的匹配项

2 exec

exec为正则的方法
exec中不管是不是全局的匹配,只要没有子表达式,其返回的都只有一个元素,如果是全局匹配,可以利用lastIndex进行下一个匹配,匹配成功后lastIndex的值将会变为上次匹配的字符的最后一个位置的索引。在设置g属性后,虽然匹配结果不受g的影响,返回结果仍然是一个数组(第一个值是第一个匹配到的字符串,以后的为分组匹配内容),但是会改变index和 lastIndex等的值,将该对象的匹配的开始位置设置到紧接这匹配子串的字符位置,当第二次调用exec时,将从lastIndex所指示的字符位置 开始检索。同样match方法在设置了g属性后,也会改变index和lastIndex的值,但是是一次性的。无法像exec那样能逐过程累积,因此无 法累积获取下一次检索的位置。

废话不多说看招
 var str = '<div><span>你好</span></div>';     //声明了一段html字符串
 var reg = /<([a-z]+)/g;                      //我想要其中的以<开始后面跟最少一个字母 的字符串
  /*match一下把所有符合结果的标签都给找出来了*/
 console.log(str.match(reg));     //match打印结果----------------["<div", "<span"]
    /*而exec只找了一次   数组的第一项为全部匹配结果就是/<([a-z]+)/的匹配结果、后面的第二项为/([a-z]+)/
   的匹配结果、index为当前匹配的的下标、input 为匹配的字符串
    */
 console.log(reg.exec(str));      //exec打印结果-----------------["<div", "div", index: 0, input: "<div><span>你好</span></div>"]
    reg.lastIndex;//设置下一次开始下标  已经匹配过的将不会再匹配,
    //比如上一次匹配到字符串第5到第7个字符找到了匹配项,那么下次将从第7个字符之后匹配下一个
    console.log(reg.exec(str));     //exec再次打印结果------["<span", "span", index: 5, input: "<div><span>你好</span></div>"]
    //细心的同学可以发现这一次的index下标变了,利用这一特性我们可以写一个while循环来找到所有的匹配项 循环条件为  当 (tag = reg.exec(html))!=null的时候;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、exec 方法 用正则表达式模式在字符串中查找,并返回该查找结果的第一个值(数组),如果匹配失败,返回null...
    JasonQiao阅读 11,926评论 0 2
  • 前言 对于正则,著称火星文字,见名知意主要它晦涩难懂,一直以来,看到它总是怕怕的,在平时,也只是简单的用用,其主要...
    itclanCoder阅读 4,208评论 0 2
  • RegExp 三大方法本文的RegExp采用直接量语法表示:/pattern/attributes。attribu...
    恩德_b0c2阅读 3,297评论 0 0
  • 正则表达式功能: 测试字符串的某个模式。例如对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信...
    DecadeHeart阅读 3,730评论 0 1
  • 初衷:看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印...
    DCbryant阅读 9,520评论 0 20