正则表达式中字符串模式匹配方法exec和match的区别

正则表达式中字符串模式匹配方法exec和match的区别

js正则表达式中字符串模式匹配方法exec()和match()的有相近的作用,但也存在一些需要注意的区别。

第一点!!!

这是没有设置全局标志g的情况:exec专门为捕获组而设计,可接受一个参数,即要应用模式的字符串,然后返回一个数组(没有捕获组时,数组只包含一项,即第一个匹配项信息;有捕获组时,其他项是模式中的捕获组匹配的字符串)。match也只接受一个参数,即一个正则表达式或regExp对象,返回的是一个数组,与exec相同。

var text="cat, bat, sat, fat";  
var pattern=/.at/;  
  
var matches=text.match(pattern);  
var matches1=pattern.exec(text);  
console.log(matches);  
console.log(matches.index);  
console.log(matches[0]);  
         
console.log(matches1);  
console.log(matches1.index);  
console.log(matches1[0]);  
  
console.log(pattern.lastIndex)  

结果如下:


var text="cat, bat, sat, fat";  
var pattern=/.(a)t/;  
  
var matches=text.match(pattern);  
var matches1=pattern.exec(text);  
console.log(matches);  
console.log(matches.index);  
console.log(matches[0]);  
         
console.log(matches1);  
console.log(matches1.index);  
console.log(matches1[0]);  
  
 console.log(pattern.lastIndex); 

结果如下:


第二点!!!

设置全局标志g的情况:match返回的是一个包含所有匹配项的数组,所以index返回undefined(因为index是索引位置,match匹配了不止一个,所以返回不了具体值,只能返回undefined);exec返回的是每次匹配的项(匹配第一次返回第一次匹配的值cat,第二次返回bat,依次返回)。当有捕获组时,情况不同!match不管捕获组,依然只返回匹配的所有项数组,exec会正常返回其他项是捕获组字符串的数组。

var text="cat, bat, sat, fat";  
var pattern=/.at/g;  
  
var matches=text.match(pattern);  
var matches1=pattern.exec(text);  
console.log(matches);  
console.log(matches.index);//0  
console.log(matches[0]);//"cat"  
         
console.log(matches1);  
console.log(matches1.index);  
console.log(matches1[0]);  
  
 console.log(pattern.lastIndex); 

结果如下:


var text="cat, bat, sat, fat";  
var pattern=/.(a)t/g;  
  
var matches=text.match(pattern);  
var matches1=pattern.exec(text);  
console.log(matches);  
console.log(matches.index);//0  
console.log(matches[0]);//"cat"  
         
console.log(matches1);  
console.log(matches1.index);  
console.log(matches1[0]);  
  
 console.log(pattern.lastIndex); 

结果如下:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,771评论 0 4
  •   引用类型的值(对象)是引用类型的一个实例。   在 ECMAscript 中,引用类型是一种数据结构,用于将数...
    霜天晓阅读 4,813评论 0 1
  • 转自: JS正则表达式一条龙讲解,从原理和语法到JS正则、ES6正则扩展,最后再到正则实践思路 温馨提示:文章很长...
    前端渣渣阅读 5,812评论 1 32
  • 前言 最先接触编程的知识是在大学里面,大学里面学了一些基础的知识,c语言,java语言,单片机的汇编语言等;大学毕...
    oceanfive阅读 8,452评论 0 7
  • 本章内容 使用对象 创建并操作数组 理解基本的 JavaScript 类型 使用基本类型和基本包装类型 引用类型的...
    闷油瓶小张阅读 3,987评论 0 0

友情链接更多精彩内容