JS正则表达式获取分组内容的方法详解

yizhihongxing

JS正则表达式获取分组内容的方法详解

正则表达式在JavaScript中的使用非常广泛,它既可以用于匹配字符串,也可以用于提取字符串中的某些部分。在很多情况下,我们需要从一个字符串中获取指定的内容,而这些内容可能位于字符串的某个位置,有时也需要将它们按照一定的规则进行分组。在这篇文章中,我们将会详细讲解如何使用正则表达式来获取分组内容。

普通分组

普通分组是指我们需要在正则表达式中使用一个或多个圆括号将需要匹配的部分括起来,以便后面可以使用$1、$2等特殊符号来获取匹配到的内容。

例如,接下来的代码段中的正则表达式包含一个普通的分组,它可以匹配类似于“abc123”这样的字符串,并将其中的字母和数字分别放在两个分组中:

var str = "abc123";
var reg = /^([a-z]+)(\d+)$/i;
var match = reg.exec(str);
console.log(match[0]); // 匹配到的完整字符串,即"abc123"
console.log(match[1]); // 第一个分组,即"a bc"
console.log(match[2]); // 第二个分组,即"123"

在上面的例子中,我们使用了^和$这两个元字符将整个正则表达式限定在了字符串的起始和结尾,以确保我们只会匹配到“abc123”这个完整的字符串。同时,在表达式的中间部分,我们使用了两个圆括号将正则表达式分成了两个部分,即[a-z]+和\d+。这两个部分分别对字母和数字进行了匹配,并将匹配到的内容放在了相应的分组中。

最后,在正则表达式匹配到字符串之后,我们可以使用exec方法获得匹配对象,该对象的若干属性对应了匹配到的内容和分组。

命名分组

除了普通分组之外,还可以使用命名分组来对正则表达式进行分组,以便更加灵活地获取匹配到的内容。命名分组的语法如下所示:

?(<name>...)

其中,name 表示该分组的名称,可以是任意有效的 JavaScript 标识符。...表示分组中需要匹配的内容,可以是一个正则表达式或多个正则表达式组合而成。

例如,接下来的代码段中的正则表达式包含一个命名的分组,它可以匹配类似于“John Doe ([email]john.doe@example.com[/email])”这样的字符串,并将其中的姓名和电子邮件地址放在了相应的分组中:

var str = "John Doe (john.doe@example.com)";
var reg = /^(?<name>[a-z]+\s[a-z]+)\s+\((?<email>[^\s\)]+)\)$/i;
var match = reg.exec(str);
console.log(match[1]); // 姓名,即"John Doe"
console.log(match[2]); // 电子邮件地址,即"john.doe@example.com"

在上面的例子中,我们使用了一对?()符号来表示一个命名的分组,其中name表示该分组的名称,[a-z]+\s[a-z]+表示匹配一个或多个字母和一个或多个空格,[^\s)]+表示匹配一个或多个非空白字符和一个右括号。最后,我们使用exec方法获取匹配对象,并通过相应的属性来获取匹配到的内容。

示例一:提取URL中的域名

接下来,我们将使用一个示例来演示如何使用正则表达式提取URL中的域名:

var url = "https://www.baidu.com/index.html";
var reg = /^https?:\/\/(?<domain>[^\/]+)\//i;
var match = reg.exec(url);
console.log(match[1]); // "www.baidu.com"

在上面的代码中,我们定义了一个名为domain的命名分组,它匹配了URL中的域名部分。具体来说,我们使用了^和$来限定正则表达式只能匹配以“https://”或“http://”开头的URL,然后使用了?()符号来定义一个名为domain的命名分组,该分组将匹配URL中“//”和“/”之间的部分,也就是域名部分。最后,我们使用exec方法获取匹配对象,并通过名称为domain的属性来获取命名分组中匹配到的内容。因此,该示例可以成功提取出“www.baidu.com”作为域名。

示例二:提取HTML中的img标签

接下来,我们将使用另一个示例来演示如何使用正则表达式提取HTML中的img标签:

var html = '<div> <img src="https://www.baidu.com/img/bd_logo1.png" width="270" height="129" /></div>';
var reg = /<img\s+[^>]*?src="(?<src>[^">]+)"/i;
var match = reg.exec(html);
console.log(match[1]); // "https://www.baidu.com/img/bd_logo1.png"

在上面的代码中,我们定义了一个名为src的命名分组,它匹配了HTML代码中的img标签中的src属性。具体来说,我们使用了]?src="[^">]+"这样一个表达式来匹配HTML中的img标签,其中]?表示匹配img标签中的其他部分(但是不匹配属性部分),src="[^">]+"表示匹配img标签中的src属性及其值。最后,我们使用exec方法获取匹配对象,并通过名称为src的属性来获取命名分组中匹配到的内容。因此,该示例可以成功提取出img标签中的src属性,即图像的URL。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JS正则表达式获取分组内容的方法详解 - Python技术站

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

相关文章

  • Node.js创建HTTP文件服务器的使用示例

    下面我将为您详细讲解如何使用Node.js创建HTTP文件服务器。 概述 Node.js是一个非常流行的JavaScript后端运行环境,它可以帮助我们轻松创建一个HTTP服务器并用于提供Web请求服务。本文将会介绍如何使用Node.js快速创建一个HTTP文件服务器。 步骤 步骤1:安装Node.js 首先我们需要安装Node.js,在官方网站 https…

    node js 2023年6月8日
    00
  • nodeJS服务器的创建和重新启动的实现方法

    下面详细讲解一下Node.js服务器的创建和重新启动的实现方法。 一、服务器的创建 1. 安装Node.js 在创建Node.js服务器之前,需要先安装Node.js。安装方法不在本文讨论范围内,可以自行查阅Node.js官网下载并安装。 2. 创建服务器文件 在项目根目录下新建一个名为app.js的文件,在文件中编写以下代码: const http = r…

    node js 2023年6月8日
    00
  • Babel 入门教程学习笔记

    Babel 入门教程学习笔记 什么是 Babel Babel 是一个广泛使用的 JavaScript 编译器,它能将 ECMAScript 2015+ 代码转换为向后兼容的 JavaScript 代码。这意味着,我们可以使用最新的 JavaScript 语言特性开发项目,同时也可以保证代码在现有的浏览器和环境中执行正确。 安装 Babel 安装 Babel …

    node js 2023年6月8日
    00
  • nodejs实现大文件(在线视频)的读取

    一、前言 随着互联网技术的发展,越来越多的媒体资源被上传到互联网上,在线播放已经成为了一个趋势。在实现在线播放过程中,我们需要处理一些大文件读取的问题。nodejs提供了一些较好的解决方案,下面就来详细讲解一下如何用nodejs实现大文件(在线视频)的读取。 二、方案 在nodejs中,主要有两种实现大文件(在线视频)的读取的方式,分别是流式读取和分块读取。…

    node js 2023年6月8日
    00
  • vue中wangEditor5编辑器的基本使用

    Vue中wangEditor5编辑器的基本使用攻略 安装wangEditor5 通过npm进行安装 npm install wangeditor –save 引入wangEditor 在Vue项目的入口文件main.js中引入wangEditor,并且将它挂载到Vue实例上去。 “` import Vue from ‘vue’ import WangEd…

    node js 2023年6月9日
    00
  • 用nodejs搭建websocket服务器

    使用Node.js可以很方便地搭建Websocket服务器,下面就来详细讲解一下具体的步骤。 步骤1:安装依赖 安装websocket和ws模块,这两个模块都可以用于搭建websocket服务器,我们在下面的示例中将演示这两个模块的使用方法。可以使用npm命令进行安装: npm install websocket npm install ws 步骤2:创建W…

    node js 2023年6月8日
    00
  • Windows环境下npm install 报错: operation not permitted, rename的解决方法

    当我们在Windows环境下使用npm进行包的安装时,有时候可能会遇到”operation not permitted, rename”的问题,这是因为Windows系统有时候会给文件锁定,从而导致文件重命名失败。下面我将为大家提供两种解决方法。 方法一:使用管理员权限打开命令行 打开命令行时,需要使用管理员权限。在Windows系统下有两种方法打开命令行。…

    node js 2023年6月8日
    00
  • Windows 系统下安装和部署Egret的开发环境

    针对“Windows 系统下安装和部署Egret的开发环境”的完整攻略,以下是具体步骤: 步骤一:安装NodeJS 1.前往NodeJS的官网下载对应平台的安装包;2.安装完成后,打开命令提示符,输入 node -v 命令,如果显示出对应版本号,则NodeJS安装成功。 步骤二:安装Git 1.前往Git的官网下载对应平台的安装包;2.安装完成后,打开命令提…

    node js 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部