JS前端开发之exec()和match()的对比使用

JS前端开发之exec()和match()的对比使用

简介

在JavaScript中,字符串对象自带了match()和exec()方法用于字符串的正则匹配。两者的区别在于返回值不同。

match()方法

match()方法是String对象的一个方法。该方法接收一个正则表达式作为参数,并返回一个匹配结果数组,如果未匹配到则返回null。如果不给该方法传递参数,结果数组中会含有一个空字符串。

示例代码:

const str = "I have 3 apples and 2 oranges.";
const result = str.match(/\d+/g);
console.log(result);

运行结果:

["3", "2"]

在上面的代码中,String对象str通过调用match()方法并传入/\d+/g正则表达式进行匹配,返回两个数字“3”和“2”。

注意,match()方法不会返回关于子组的信息,即没有关于单括号()中的内容的信息,但是在全局模式下,它会返回数组中匹配到的所有结果。

exec()方法

exec()方法是RegExp对象的一个方法。该方法接收一个字符串作为参数,并在该字符串上执行正则表达式匹配,返回匹配到的第一个结果。当RegExp设置了全局模式(g),exec()将从匹配到的子字符串后的字符开始寻找下一个匹配项。如果没有找到,则返回null。

示例代码:

const regex = /\d+/g;
const str = "I have 3 apples and 2 oranges.";
let result;

while ((result = regex.exec(str)) !== null) {
  console.log(`找到 ${result[0]},从位置 ${result.index} 开始`);
}

运行结果:

找到 3,从位置 7 开始
找到 2,从位置 23 开始

在上面的代码中,RegExp对象regex执行全局匹配,当前匹配到的结果通过while循环与null做比较,直到匹配结束。每次循环输出匹配结果及其位置。

对比

虽然exec()和match()方法都是用于字符串的正则匹配,两者之间还是有一些细微的区别。

  1. 返回值不同

match()方法返回匹配到的结果数组,而exec()方法则返回一个匹配到的结果对象。

  1. 全局模式下表现不同

在全局模式下,match()方法返回所有匹配到的结果数组,而exec()方法返回第一个匹配到的结果对象,并且每次调用exec()方法时都会向下寻找下一个匹配项,直到全部匹配结束。

示例1

假设有一个字符串需要取出其中的数字,我们可以使用match()方法:

const str = "I have 3 apples and 2 oranges.";
const nums = str.match(/\d+/g);
console.log(nums); // ["3", "2"]

示例代码中把字符串中的数字通过正则表达式匹配并返回。

示例2

假如需要找出字符串中所有匹配项的起始位置和匹配内容,可以使用exec()方法:

const regex = /\d+/g;
const str = "I have 3 apples and 2 oranges.";
let result;
while ((result = regex.exec(str)) !== null) {
  console.log(`找到 ${result[0]},从位置 ${result.index} 开始`);
}

示例代码中我们通过正则表达式匹配出字符串中的所有数字,输出的结果包含每个数字及其起始位置1。

总结

exec()和match()这两个方法虽然都是用于字符串的正则匹配,但是它们的使用场景不同:

  • 如果只需要取出字符串中的所有匹配项,应该使用match()方法。
  • 如果需要对某个字符串执行多次匹配操作,或者需要找到匹配项的位置,那么应该使用exec()方法。

注意:由于match()会返回所有匹配结果,所以它比exec()方法更占用内存。因此,在执行全局匹配并需要对匹配项逐个进行操作的时候,exec()要优于match()方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS前端开发之exec()和match()的对比使用 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • JS基于HTML5的canvas标签实现炫目的色相球动画效果实例

    让我来为你讲解“JS基于HTML5的canvas标签实现炫目的色相球动画效果实例”的完整攻略。 1.什么是HTML5的canvas标签? HTML5的canvas标签是一种新的HTML标签,它提供了一种使用JavaScript和HTML5绘制图像的方法,并且支持多种绘制和渲染效果。Canvas标签用于在Web页面上绘制图形,如:线条、矩形、圆形、文本等。 2…

    JavaScript 2023年6月10日
    00
  • 微信小程序的部署方法步骤

    当您准备好为您或您的客户构建微信小程序时,下一步是部署它。以下是微信小程序的部署方法步骤的完整攻略: 1. 注册小程序帐号 首先,在 微信公众平台 上注册一个小程序帐号。按照提示填写信息并完成注册流程。 2. 开发小程序代码 您可以使用 微信官方开发工具 开始创建和构建小程序。请按照教程进行设置和创建小程序代码。 3. 添加小程序版本 在微信小程序开发者工具…

    JavaScript 2023年6月10日
    00
  • 简述JavaScript提交表单的方式 (Using JavaScript Submit Form)

    下面是使用JavaScript提交表单的详细攻略: 1. 背景知识 表单是网页中非常常见的一种交互方式,用户在表单中填写信息后,需要将表单提交到后台。本文将介绍如何使用JavaScript提交表单。 2. JavaScript提交表单的方式 2.1 使用表单提交按钮 通常情况下,表单中会有一个提交按钮,当用户点击提交按钮时,表单会自动提交。代码示例: &lt…

    JavaScript 2023年6月10日
    00
  • JS实现消灭星星案例

    下面是针对JS实现消灭星星案例的完整攻略及示例说明: 简介 消灭星星是一款用JS实现的小游戏,玩家需要点击拥有相同颜色的符号,消除它们并获取分数。本文将详细介绍如何用JS实现这个小游戏。 基础知识 在开始之前,你需要掌握以下基础知识: HTML: 用来展示游戏界面; CSS: 用来美化游戏界面; JS: 用来控制游戏逻辑。 实现步骤 第一步:准备工作 首先,…

    JavaScript 2023年6月11日
    00
  • JavaScript接入百度地图API的方法步骤

    JavaScript接入百度地图API的方法步骤: 1.在百度地图开放平台上申请API key 首先需要在百度地图开放平台上注册账号并申请一个API key,申请成功后可以将这个key填入JavaScript中相关的API调用代码中。API key同时也是百度地图开放平台对使用者的身份认证标识。 2.引入百度地图JavaScript API库 在HTML代码…

    JavaScript 2023年6月11日
    00
  • 基于js 本地存储(详解)

    下面是关于“基于js本地存储”的详细攻略。 什么是本地存储? 在 web 应用中,本地存储指的是浏览器提供的一种存储机制,能够保存用户在网站上的某些信息,供在用户下一次访问该网站时使用。本地存储有多种实现方式,其中比较常用的包括Cookie、localStorage和sessionStorage。 localStorage 是什么? localStorage…

    JavaScript 2023年5月27日
    00
  • Ajax实现无刷新三联动下拉框

    介绍 本攻略将会详细介绍如何通过 Ajax 技术实现无刷新三联动下拉框。所谓三联动下拉框指的是三个下拉框之间存在父子关系,当父级下拉框的选项改变时,子级下拉框的选项会进行更新。 实现步骤 HTML 部分 首先,在 HTML 部分构建三个 select 标签,分别表示省市区县。 <select id="province"> &l…

    JavaScript 2023年6月10日
    00
  • 基于javascript的无缝滚动动画实现2

    针对”基于javascript的无缝滚动动画实现2″,我来给您详细讲解一下。 简介 无缝滚动动画是Web开发中较为常见的功能,通常用于实现图片、文字等大块内容的滚动展示。本攻略将介绍使用JavaScript实现无缝滚动动画的方法。 实现过程 本攻略实现的无缝滚动动画需要以下主要步骤: 创建HTML布局:需要创建一个固定大小的div容器,再将需要滚动展示的内容…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部