侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

JavaScript中match方法与exec方法的异同

2024-05-11 星期六 / 0 评论 / 0 点赞 / 90 阅读 / 2659 字

var someText="web2.0 .net2.0";var pattern=/(/w+)(/d)/.(/d)/g;var outCome_exec=pattern.exec(someText)

var someText="web2.0 .net2.0";var pattern=/(/w+)(/d)/.(/d)/g;var outCome_exec=pattern.exec(someText);var outCome_matc=someText.match(pattern);
str.match(reg);reg.exec(str);

如上段代码所示,两者的调用方式不同,match方法是字符串调用的方法,而exec方法是正则表达式对象调用的方法;

两者的返回结果都是数组,既有相同之处也有不同之处。

当正则表达式没有g时,两者返回结果一致,请看下段代码:

var someText="web2.0 .net2.0";var pattern=/(/w+)(/d)/.(/d)/;var outCome_exec=pattern.exec(someText);var outCome_matc=someText.match(pattern);console.log(outCome_exec[0],outCome_exec[1]);//web2.0 webconsole.log(outCome_matc[0],outCome_matc[1]);//web2.0 web

当没有加g时

两者都只是搜索到第一个匹配项后就返回匹配到的值存在数组的下标为0的位置;

其余位置分别放置正则表达式中特别选中的数据;

并且index属性值均为第一个匹配项的下标位置;

下段代码为返回的数组模式和属性值:

//arr:[kword,$1,$2,...]console.log(outCome_exec.index);//0console.log(outCome_matc.index);//0console.log(pattern.lastIndex);//0

当正则表达式加上g时

match返回装有所有匹配到的值的数组,但是没有index属性,返回的数组如下:

arr:[kword1,kword2,kword3,...]

exec则是依次查找str中符合reg要求的第一个关键词,通过reg.lastIndex属性控制下一次查找的位置

循环调用exec

执行分3步:

1、将本次找到的关键词保存在数组的第一个元素  arr:[kword,$1,$2]

2、将本次找到的关键词的位置保存在index  arr.index

3、将reg对象的lastIndex属性设置为index之后,reg.lastIndex规定下次从哪个位置开始

每次返回的数组即是arr:[kword,$1,$2];

代码如下:

var someText="web2.0 net2.0";var pattern=/(/w+)(/d)/.(/d)/g;//加gvar result;while((result=pattern.exec(someText))!==null){  console.log(result[0]);//web2.0     net2.0  console.log(result[1]);//web        net  console.log(result.index);//0       7  console.log(pattern.lastIndex);//6  13}

 

广告 广告

评论区