首页 > 编程语言 >在 JavaScript 中,exec() 和 match() 区别

在 JavaScript 中,exec() 和 match() 区别

时间:2024-04-06 09:55:06浏览次数:28  
标签:返回 匹配 exec 正则表达式 JavaScript 字符串 match

在 JavaScript 中,exec() 和 match() 都是与正则表达式相关的常用方法,但它们的使用方式和返回的结果有所不同。

exec() 方法

exec() 是 RegExp 对象的一个方法,用于在字符串中执行一次正则表达式匹配。它的语法是:

regexp.exec(string)

其中 regexp 是一个正则表达式对象,string 是要在其中执行匹配的字符串。

exec() 方法返回一个数组,包含匹配的结果。如果没有匹配项,则返回 null。返回的数组包含特定的属性:

  • index:匹配项在字符串中的位置。
  • input:被查找的原始字符串。
  • groups:命名捕获组的对象(如果正则表达式中有命名捕获组的话)。

如果正则表达式包含全局标志 gexec() 方法的行为会有所不同。在带有 g 标志的情况下,每次调用 exec() 都会返回字符串中的下一个匹配项,直到没有更多的匹配项为止。每次调用后,正则表达式对象的 lastIndex 属性都会更新,以反映下一次匹配开始的位置。

match() 方法

match() 是字符串对象的一个方法,用于在字符串中检索与正则表达式匹配的项。它的语法是:

str.match(regexp)

其中 str 是字符串对象,regexp 可以是正则表达式对象或者正则表达式字面量。

match() 方法返回一个数组,包含字符串中所有与正则表达式匹配的项。如果没有匹配项,则返回 null。如果正则表达式没有全局标志 gmatch() 的行为类似于 regexp.exec(str),但返回的是整个匹配结果的数组,而不是包含匹配信息的数组数组。如果正则表达式包含 g 标志,match() 会返回所有匹配项的数组。

区别

  • 调用者不同:exec() 是 RegExp 对象的方法,而 match() 是字符串对象的方法。
  • 返回值:在不使用全局标志 g 的情况下,两者都返回包含匹配结果的数组。但在使用 g 时,exec() 在每次调用时返回下一个匹配项,而 match() 返回所有匹配项的数组。
  • 用途:exec() 更适用于在循环中逐个检索匹配项,特别是当需要访问正则表达式的 lastIndex 属性时。而 match() 则更直接地返回所有匹配项,适合一次性获取所有匹配结果。

示例

let str = "The rain in SPAIN stays mainly in the plain";  
let regex = /ain/g;  
  
// 使用 exec()  
let execResult;  
while ((execResult = regex.exec(str)) !== null) {  
  console.log(execResult[0]); // 依次输出 "ain", "ain", "ain"  
}  
  
// 使用 match()  
let matchResult = str.match(regex);  
console.log(matchResult); // 输出 ["ain", "ain", "ain"]

在这个例子中,exec() 在循环中被用来逐个检索匹配项,而 match() 则直接返回所有匹配项的数组。

标签:返回,匹配,exec,正则表达式,JavaScript,字符串,match
From: https://www.cnblogs.com/myflowers/p/18117178

相关文章

  • 初识JavaScript
    目录前言:1.认识JavaScript:1.1网页的动态效果:1.2 前后端交互--数据提交(弹窗/输入/事件监听):1.3进阶--前端高级框架: 1.3.1Vue.js:1.3.2React.js:1.3.3Node.js:1.3.4Three.js:2.JavaScript的基本输入输出: 2.1注释:2.1.1单行注释:2.1.1多行注释:2.2输出语句:2......
  • JavaScript基础代码练习之数列第n位
    一、这段代码要求用户输入一个数字n,然后使用递归的方式计算斐波那契数列中第n位的值,并将结果以警告框的形式显示出来。斐波那契数列是一个经典的数学问题,其中每个数字是前两个数字的和,数列的前两个数字通常是1。因此,这段代码中的函数F(n)使用了递归的方式来计算第n位的斐波那契......
  • JavaScript不建议直接声明undefined的原因,极致的严谨和仔细
    前言:很多人写JavaScript代码时习惯用vara=undefined这种写法,其实这种写在某种情况下会产生意想不到的bug,又或者说undefined本身就是JavaScript的一个bug??为什么这么说呢,因为undefined它应该是关健字才合理的,但undefined在JavaScript里面压根就不是关健字,它是window......
  • javascript常见100问|前端基础知识|问ajax-fetch-axios-区别请用 XMLHttpRequestfetch
    00-开始前端基础知识HTMLCSSJSHTTP等基础知识是前端面试的第一步,基础知识不过关将直接被拒。本章将通过多个面试题,讲解前端常考的基础知识面试题,同时复习一些重要的知识点。为何要考察扎实的前端基础知识,是作为前端工程师的根本。基础知识能保证最基本的使用,即招聘......
  • 前端学习<四>JavaScript基础——03-常量和变量
    常量(字面量):数字和字符串常量也称之为“字面量”,是固定值,不可改变。看见什么,它就是什么。常量有下面这几种:数字常量(数值常量)字符串常量布尔常量自定义常量数字常量数字常量非常简单,直接写数字就行,不需要任何其他的符号。既可以是整数,也可以是浮点数。例如: //不......
  • 由于JavaScript有两种方式两种写法Creating a regular expression,在线测试网站https:/
    constre=/ab+c/;constre=newRegExp("ab+c");如果要使用第二种方式需要改变flavor和delimiters  RegExp比//需要额外的一次转义可以点击CodeGenerator查看   delimiters的不同会影响所需要的转义......
  • 前端学习<四>JavaScript基础——01-编程语言和JavaScript简介
    计算机语言概念计算机语言:人与计算机之间通信的语言。它是人与计算机之间传递信息的媒介,它通过特定的语法规则和语义约定,将人类可理解的指令转化为计算机可以执行的机器指令。计算机程序:就是计算机所执行的一系列的指令集合,程序全部都是用我们所掌握的语言来编写的,如果我们......
  • 前端学习<四>JavaScript基础——02-JavaScript入门:hello world
    开始写第一行JavaScript:helloworldJS代码的书写位置在哪里呢?这个问题,也可以理解成:引入JS代码,有哪几种方式?有三种方式:(和CSS的引入方式类似)行内式:写在HTML标签内部。内嵌式(内联式):写在script标签中。外链式:引入外部JS文件。方式1:行内式代码举例: <inputty......
  • ERROR: No matching distribution found for pymcubes
    (pytorch3drecgan)ubuntu@ubuntu:~/lcx/3D-RecGAN-pytorch-masterv3$pipinstallpymcubesWARNING:Keyringisskippedduetoanexception:Failedtounlockthecollection!WARNING:Retrying(Retry(total=4,connect=None,read=None,redirect=None,status=None))......
  • JavaScript变量对象详解
    正文在JavaScript中,变量对象是执行上下文中的一个重要概念,它负责存储函数中的变量、函数声明和形参。了解变量对象对于理解JavaScript的作用域、作用域链以及变量的声明和提升至关重要。1.变量对象的定义变量对象是在执行上下文创建阶段被创建的,用于存储该上下文中的变......