美文网首页程序员我爱编程
正则表达式中字符串模式匹配方法exec和match的区别

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

作者: 祝我好运zz | 来源:发表于2018-04-17 09:44 被阅读0次

    正则表达式中字符串模式匹配方法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); 
    

    结果如下:


    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/refykftx.html