正则表达式中的 $1, $2 等是什么意思?

正则表达式中的 $1, $2 等符号表示匹配成功后捕获组内对应的内容。在学习正则表达式时,了解这些符号的含义及其作用非常重要。

什么是捕获组?

捕获组是指将一部分正则表达式中的匹配内容“捕获”起来以备后续使用的过程。例如,下面这个正则表达式:

------

它可以匹配连续的 a 字符串。这个正则表达式中,括号包裹的 a+ 部分被视为一个捕获组。当匹配成功时,该捕获组中的内容会被存储起来,以便后续使用。

如何使用捕获组

在正则表达式中使用捕获组时,我们可以使用 $1, $2 等符号来访问对应的捕获组内容。

例如,下面这个正则表达式:

--------------

它可以匹配两个由空格隔开的单词,并且将这两个单词分别存储到第一个和第二个捕获组中。我们可以使用 $1$2 来获取这两个捕获组的内容,例如:

----- --- - ------ ------
----- ----------- - -------------------------

--------------------------- -- ----------
--------------------------- -- ----------

上面的代码中,matchResult[1]matchResult[2] 分别代表了正则表达式中第一个和第二个捕获组的内容。

$0 的含义

除了 $1, $2 等符号外,还有一个 $0 符号。它表示整个匹配成功的字符串。例如,下面这个正则表达式:

-------

可以匹配所有包含 hello 子串的字符串。当匹配成功时,$0 将会返回匹配到的完整字符串。

例如,下面的代码:

----- --- - ------ ------
----- ----------- - ------------------

--------------------------- -- ----------

上面的代码中,matchResult[0] 表示正则表达式匹配到的完整字符串。

总结

在正则表达式中,使用捕获组可以将匹配到的部分存储起来以供后续使用。而 $1, $2 等符号则可以访问对应的捕获组内容。此外,$0 可以访问整个匹配成功的字符串。掌握这些符号的含义和用法对于正则表达式的学习和应用非常重要。

示例代码

下面是一个示例代码,它演示了如何使用捕获组和 $1, $2 等符号来获取匹配结果:

----- --- - ------ ------
----- ----------- - -------------------------

--------------------------- -- --------- ------
--------------------------- -- ----------
--------------------------- -- ----------

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/28705


猜你喜欢

  • 可以使用getElementsByTagName选取多个标签吗?

    简介 JavaScript中的 getElementsByTagName 方法可以通过标签名选取一个或多个文档对象模型(DOM)元素。然而,一些开发者可能会想知道是否可以使用这个方法来选取多个不同类型...

    7 年前
  • console.log() 是异步还是同步的?

    console.log() 是前端开发中常用的一种调试方法,它可以将一些信息打印到浏览器的控制台中,以便于开发者进行调试。但是,你知道 console.log() 到底是异步还是同步的吗?在这篇文章中...

    7 年前
  • Blob createObjectURL download 在 Firefox 中无法正常工作的解决方法

    问题描述 在前端开发中,我们经常需要通过 Blob 对象来生成文件并提供下载。其中一种常用的方式是使用 createObjectURL() 方法来创建一个 URL,并将其赋值给一个链接标签的 href...

    7 年前
  • 为什么无法更改构造函数的原型?

    在 JavaScript 中,每个对象都有一个内部属性 [[Prototype]],该属性指向其原型对象。原型对象是另一个对象,它包含共享属性和方法,这些属性和方法可以从该对象的实例继承。

    7 年前
  • JavaScript Troubleshooting Tools in Internet Explorer

    在前端开发中,JavaScript 是一门必备技能。但是,在编写 JavaScript 代码时,我们经常会遇到各种错误和问题。为了更好地调试 JavaScript 代码,Internet Explor...

    7 年前
  • 在iframe中检测点击事件

    在前端开发中,我们可能需要在一个iframe中嵌入其他网站或应用程序。但是,当用户在iframe内部点击时,如何检测这些点击事件成为了一个挑战。 检测方法 为了检测iframe内的点击事件,我们需要使...

    7 年前
  • Gulp - 文件复制和重命名

    Gulp 是一个流式构建系统,可以简化前端开发任务。其中一个常见的使用案例是文件复制和重命名。 安装 Gulp 首先,你需要在本地安装 Gulp。使用以下命令: --- ------- -------...

    7 年前
  • JavaScript 数组:为什么这不是有效的?

    在 JavaScript 中,数组是一种用于存储和操作数据的重要数据结构。然而,在编写代码过程中,你可能会遇到一些使数组无效的错误。本文将探讨其中一个常见问题,并提供一些解决方案。

    7 年前
  • 从 Error 对象继承 - message 属性在哪里?

    当我们在编写前端 JavaScript 应用时,经常会使用 try-catch 来捕获和处理错误。而 Error 对象则是其中最常见的一种错误类型。但是,在继承自 Error 对象时,我们可能会遇到一...

    7 年前
  • 如何将 Twitter Bootstrap CDN 备用为本地拷贝

    在前端开发中,使用 CDN 可以加速页面加载速度,提高用户体验。然而,当 CDN 不可用时,我们需要备用一个本地的副本。本文将介绍如何将 Twitter Bootstrap CDN 备用为本地拷贝。

    7 年前
  • 在AngularJS中使用ng-bind解析HTML

    在AngularJS中,我们可以使用ng-bind指令将数据绑定到视图中。但是,默认情况下,ng-bind指令不会解析HTML标记。这意味着,如果您尝试在ng-bind中使用包含HTML标记的字符串,...

    7 年前
  • 订阅 AngularJS 属性变化

    在 AngularJS 中,我们可以使用 $watch 函数来订阅指定作用域内的属性变化。但是,在某些情况下,我们需要更细粒度的控制,只订阅特定属性的变化。 监听器和表达式 在 AngularJS 中...

    7 年前
  • Angular.copy() 与赋值操作符 (=) 的区别

    在 Angular 应用中,我们经常会遇到需要复制对象或数组的情况。在这种情况下,有两种基本的方法可以使用:angular.copy() 和赋值操作符 (=)。虽然它们都可以用来实现对象和数组的复制,...

    7 年前
  • JavaScript中的循环缓冲区(Circular Buffer)

    在前端开发中,循环缓冲区(Circular Buffer)是一种非常有用的数据结构。它可以在固定大小的数组中存储数据,并且始终保持固定的长度,当达到最大长度时,新数据将覆盖旧数据。

    7 年前
  • 在 document.ready 里面写代码有必要吗?

    很多前端开发者经常会在 JavaScript 代码中使用 jQuery 的 $(document).ready() 函数,以确保 DOM 已经加载完毕再执行他们的代码。

    7 年前
  • 算法:确定序列中所有可能移除一组值的方式

    在前端开发中,我们经常需要对数据进行筛选和过滤。有时候,我们需要从给定的序列中移除一组特定的值,这就需要一个算法来确定所有可能的移除方式。 简介 该算法基于递归思想,通过枚举序列中每个元素是否被移除来...

    7 年前
  • 如何获取 scrollLeft 的最大值?

    介绍 scrollLeft 是 HTML 元素的一个属性,用于获取或设置元素水平滚动条滚动的距离。在前端开发中,我们可能需要动态获取元素的 scrollLeft 最大值,并根据这个值进行一些操作,比如...

    7 年前
  • 在页面加载完成后加载脚本

    在前端开发中,我们通常需要通过 JavaScript 来引入各种外部库和插件。然而,如果这些脚本在页面加载时同时被请求,可能会导致页面加载速度变慢,影响用户体验。那么有没有办法在页面加载完成之后再加载...

    7 年前
  • Babelify 报错:从 node_modules 导入模块时出现 ParseError

    在前端开发中,我们通常使用 Babel 和 Browserify 来编译和打包 JavaScript 代码。然而,当我们在 Babelify 中尝试导入来自 node_modules 的模块时,可能会...

    7 年前
  • React Native: 获取元素的位置

    React Native 是一种使用 JavaScript 构建移动应用程序的框架。在开发应用程序时,经常需要获取某个元素的位置信息。本文将介绍如何使用 React Native 获取元素的位置。

    7 年前

相关推荐

    暂无文章